day 38

1、String  StringBuffer 的区别 

JAVA 平台提供了两个类:String  StringBuffer,它们可以储存和操作字符串即包含多个 字符的字符数据这个 String 类提供了数值不可改变的字符串而这个 StringBuffer 类提供 的字符串进行修改当你知道字符数据要改变的时候你就可以使用 StringBuffer。典型地你可以使用 StringBuffers 来动态构造字符数据另外,String 实现了 equals 方法,new String(“abc”).equals(newString(“abc”)的结果为true,StringBuffer没有实现equals方法所以,new StringBuffer(“abc”).equals(newStringBuffer(“abc”)的结果为 false。   接着要举一个具体的例子来说明我们要把1100的所有数字拼起来组成一个串。 StringBuffer sbf = new StringBuffer();  for(int i=0;i<100;i++) {        sbf.append(i); } 上面的代码效率很高因为只创建了一个 StringBuffer 对象而下面的代码效率很低因为 创建了101个对象。 String str = new String();  for(int i=0;i<100;i++) {        str = str + i; } 在讲两者区别时应把循环的次数搞成10000,然后用 endTime-beginTime 来比较两者执 行的时间差异最后还要讲讲 StringBuilder StringBuffer 的区别。   String 覆盖了 equals 方法和 hashCode 方法 StringBuffer没有覆盖 equals 方法和 hashCode 方法所以 StringBuffer对象存储进 Java集合类中时会出现问题

 

2、什么是 java 序列化如何实现 java 序列化或者请解释 Serializable接口 的作用

  我们有时候将一个 java 对象变成字节流的形式传出去或者从一个字节流中恢复成一个 java 对象例如要将 java 对象存储到硬盘或者传送给网络上的其他计算机这个过程我们可 以自己写代码去把一个 java 对象变成某个格式的字节流再传输但是,jre 本身就提供了这 种支持我们可以调用 OutputStream  writeObject 方法来做如果要让 java 帮我们做要被传输的对象必须实现serializable 接口这样,javac 编译时就会进行特殊处理编译 的类才可以被 writeObject方法操作这就是所谓的序列化需要被序列化的类必须实现 Serializable 接口该接口是一个 mini 接口其中没有需要实现的方法, implementsSerializable 只是为了标注该对象是可被序列化的。     例如 web 开发中如果对象被保存在了 Session ,tomcat 在重启时要把 Session  象序列化到硬盘这个对象就必须实现 Serializable 接口如果对象要经过分布式系统进行 网络传输或通过 rmi 等远程调用这就需要在网络上传输对象被传输的对象就必须实现 Serializable 接口

 

3、垃圾回收的优点和原理并考虑 2 种回收机制

Java 语言中一个显著的特点就是引入了垃圾回收机制使 c++程序员最头疼的内存管理的 问题迎刃而解它使得 Java 程序员在编写程序的时候不再需要考虑内存管理由于有个垃 圾回收机制,Java 中的对象不再有"作用域"的概念只有对象的引用才有"作用域"。垃圾回 收可以有效的防止内存泄露有效的使用可以使用的内存垃圾回收器通常是作为一个单独

的低级别的线程运行不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象

进行清楚和回收程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收回收机制有分代复制垃圾回收和标记垃圾回收增量垃圾回收
源码地址: https://pan.quark.cn/s/3916362e5d0a 在C#编程平台下,构建一个曲线编辑器是一项融合了图形用户界面(GUI)构建、数据管理及数学运算的应用开发任务。 接下来将系统性地介绍这个曲线编辑器开发过程中的核心知识点:1. **定制曲线面板展示数据曲线**: - 控件选用:在C#的Windows Forms或WPF框架中,有多种控件可用于曲线呈现,例如PictureBox或用户自定义的UserControl。 通过处理重绘事件,借助Graphics对象执行绘图动作,如运用DrawCurve方法。 - 数据图形化:通过线性或贝塞尔曲线连接数据点,以呈现数据演变态势。 这要求掌握直线与曲线的数学描述,例如两点间的直线公式、三次贝塞尔曲线等。 - 坐标系统与缩放比例:构建X轴和Y轴,设定坐标标记,并开发缩放功能,使用户可察看不同区间内的数据。 2. **在时间轴上配置多个关键帧数据**: - 时间轴构建:开发一个时间轴组件,显示时间单位刻度,并允许用户在特定时间点设置关键帧。 时间可表现为连续形式或离散形式,关键帧对应于时间轴上的标识。 - 关键帧维护:利用数据结构(例如List或Dictionary)保存关键帧,涵盖时间戳和关联值。 需考虑关键帧的添加、移除及调整位置功能。 3. **调整关键帧数据,通过插值方法获得曲线**: - 插值方法:依据关键帧信息,选用插值方法(如线性插值、样条插值,特别是Catmull-Rom样条)生成平滑曲线。 这涉及数学运算,确保曲线在关键帧之间无缝衔接。 - 即时反馈:在编辑关键帧时,即时刷新曲线显示,优化用户体验。 4. **曲线数据的输出**: - 文件类型:挑选适宜的文件格式存储数据,例如XML、JSON或...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值