|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 马太效应 于 2017-7-13 23:37 编辑
Today is the 9th day and i hope i can stick to it.
①无论System.arraycopy()还是Arrays.copyOf,用在类类型声明的数组时,都是执行浅层复制。
Java对象的深层复制是指Java对象A本身被clone成新对象B,同时A的属性也是被clone成新对象,赋值到A的各个属性上去,A与B的相同属性都引用到不同的对象;
Java对象的浅层复制是指Java对象A本身被clone成新对象B,但A的属性没有被clone处理,只是把A的各个属性所指的对象赋值到B对应的属性上,A与B的相同属性都引用到同一个对象。
- //数组元素拷贝
- public class Test {
- static void print(int[] arr) {
- String ret = "[";
- for (int i = 0; i < arr.length; i++) {
- ret = ret + arr[i];
- if (i != arr.length - 1) {
- ret = ret + ",";
- }
- }
- ret = ret + "]";
- System.out.println(ret);
- }
- /*
- * int[] src ={1,2,3,4,5}; 目标 int[] dest=new int[10];
- *
- * 从哪一个位置开始拷贝 在目标数组中开始存放的位置 考虑拷贝几个元素 拷贝方法
- *
- * src:源,从哪个数组中拷贝数据
- * dest:目标,把数据拷贝到哪一个数组中
- * srcPos:从源数组中的哪一位置开始拷贝
- * destPos:在目标数组中开始存放的位置
- * length:拷贝几个元素
- */
- static void arrayCopy(int[] src, int srcPos, int[] dest, int destPos,
- int length) {
-
- for (int index = srcPos; index < srcPos + length; index++) {
- dest[destPos] = src[index];
- destPos++;
- }
- }
- public static void main(String[] args) {
- int[] src = { 1, 2, 3, 7, 8, 11 };
- int[] dest = new int[10];
- // print(dest);
- // 把src数组中的3,7,8,11拷贝到dest数组中
- // arrayCopy(src,2,dest,3,4);
- // print(dest);
- System.arraycopy(src, 2, dest, 3, 4);
- print(dest);//[0,0,0,3,7,8,11,0,0,0]
- }
- }
复制代码
②字符串对象(引用数据类型)- public class StringDemo {
- public static void main(String[] args) {
- String name = "Apple";
- System.out.println(name.charAt(0));// A
- System.out.println(name.toUpperCase());// APPLE
- char[] cs = { 'A', 'p', 'p', 'l', 'e' };
- String name1 = new String(cs);
- char[] cs2 = name1.toCharArray();
- }
- }
复制代码
a. 字符串本质是打包字符数组的对象,是java.lang.String的实例。
b. 在启动JVM并指定执行类时,可以一并指定命令行自变量,会收集为String数组,由main()中的args参考。
c.使用charAt()指定取得字符串中某个字符,索引从0开始;
使用toUpperCase()将原本小写的字符串内容转为大写的字符串内容
d.字符串剖析为基本类型
方法 | 说明 | Byte.parseByte(number) | 将number剖析为byte整数 | Float.parseFloat(number) | 将number剖析为float浮点数 | Integer.parseInt(number) | 将number剖析为int整数 | ... | .. |
e. 以""包括的字符串,只要内容相同(序列、大小写相同),无论在程序代码中出现几次,JVM都只会建立一个String实例,并在字符串池中维护。
f. 比较字符串实际字符内容是否相同,使用equals()。
g.字符串对象一旦建立,就无法更改对象中任何内容,对象上没有任何方法可以更改字符串内容。
h. 字符串的使用“”,链接字符串必须使用+符号
任何数据类型和String相连接(+),结构都是一个新的字符串
- public class StringDemo2 {
- public static void main(String[] args) {
- // Java引用类型:类,接口,数组
- // 最常用的引用接口类型:String类->字符串
- // 引用类型的初始值:null (空)
- String useName = new String();
- useName = "维尼熊";
- System.out.println("名字:" + useName);// 名字:维尼熊
- int age = 17;
- System.out.println("年龄=" + age);// 年龄=17
- // " " 转义字符
- System.out.println(""你好世界"");// "你好世界"
- System.out.println(8 + 7 + "Hello");// 15Hello
- System.out.println("Hello" + 7 + 8);// Hello78
- System.out.println(7 + "Hello" + 8);// 7Hello8
- /* int xx="ABC";//不兼容的类型,String无法转换为int */
- }
- }
复制代码
|
评分
-
查看全部评分
|