马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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 */
}
}
|