数组
1、数组定义:
数据类型 数组名 [] = new 数据类型[长度];
或:
数据类型 [] 数组名 = new 数据类型[长度];
2、数组属于引用类型,可以发生引用传递;即:同一个堆内存空间被不同的栈指定
被指定的堆内存总中的数据可以被不同的引用修改同一个对象中的值
3、冒泡排序,数组转至(新数组、首位互换)
/**
* 冒泡排序
*/
int aa[] = new int[]{1,4,7,8,9};
for (int cc: aa) {
for (int x = 0; x < aa.length-1; x++){
int z = 0;
if(aa[x]>aa[x+1]){
z = aa[x];
aa[x] = aa[x+1];
aa[x+1] = z;
}
}
print(aa);
System.out.println();
}
4、数组拷贝 System.arraycopy()
int aa[] = new int[]{1,4,7,8,9};
int bb[] = new int[]{11,44,75,86,97};
System.arraycopy(aa,3,bb,2,2);
//print(aa);
print(bb);
5、数组排序Arrays.sort();--正序排序 ,
-----倒序排列待验证
int aa[] = new int[]{1,4,7,2,9};
int bb[] = new int[]{11,44,75,86,97};
System.arraycopy(aa,3,bb,2,2);
//print(aa);
print(bb);
System.out.println();
Arrays.sort(aa);
print(aa);
6、对象数组
多个对象的一个集合--略
String
1、String实例化方式
第一种:String str = "123";// 直接赋值---推荐
第二种:String str2 = new String("456")// 调用构造器,先不用纠结传入是一个String类型的实例问题
2、1》两种实例化的区别:直接赋值,使用共享设计模式,jvm底层有一个对象池,像一些特殊的类,如String类,使用了直接赋值的方式创建了一个类对象时,会将此对象的所使用的的匿名对象入池保存,而后如果还有其他String类对象,也采用了直接赋值的情况 ,并设置了同样值的情况下不会再次开辟新的堆内存空间,而是使用已有的对象进行引用分配继续使用
2》使用构造方法new 来创建对象,一但使用关键字new 则会开辟新的堆内存空间
3》如果使用构造器的方式创建实例,则会开辟两块堆内存空间,其中匿名类的那块堆内存空间会成为垃圾空间
如果想要将通过new关键词实例的对象入池,则可以使用String提供的手工入池方法 intern();
3、字符串的内容比较(对象的比较--如果其他自定义对象要比较重写equals) "".equals()方法,尽量将常量放到前边避免空指 针
4、‘==’java提供的运算符,用来比较地址值的比较
5、字符串内容一旦声明则不可改变,String类对象内容的改变是依靠引用关系的变更来实现的
6、字符串内容不要频繁的修改,不然会产生很多垃圾
7、程序中字符串的下标 从0开始
8、字符串中常用方法--参照API(charAt\tocharArray\字节转换\转大写(touppercase)、小写(tolowercase)、相等判断不区分大小写的方法、compareto、contains(1.5之后,推荐使用)\indexof(之前)\startwith\endwith(多重载)、replaceAll\replace\replaceFirst\substring(重载)、replit(重载及按照空串""拆分是情况--以单个字符拆分及如果按照需要转义的符号(正则标记)拆分则需要注意转义‘\\’、concat(字符串连接,不建议使用平时使用‘+’就可以))\trim重载、length、intern(数据入池)、isEmpty(判断是否是空串)、等)---待整理
9、compareto:只有String类才具有大小的关系比较
10、String虽然是一个类,属于对象类型,但由于其内容不可变,很多时候可以直接把string当做基本数据类型使用就可以,即:每个String变量只能保存一个数据
*******
尤其注意,如果在方法中对一个Stirng做了修改一定记得给引用重新赋值,因为String不可修改