一 数组初始化完后 长度不可变,即使把数组元素的数据清空,但它所占的空间依然被保留。
二 数组是一种数据类型,它本身是一种引用类型
三 数组初始化
1. new int[]{3,4,5,6} 2。 {3,4,5,6} (静态初始化)
2 new int[5]; 动态初始化
3 动态初始化时的默认值 整i数 0 ,浮点数 0.0, char‘\u0000’,布尔类型 false ,引用类型null;
四 深入数组
如果要访问数组对象本身,则只能通过这个数组的引用变量来访问它
1当一个方法执行时,每个方法都会建立自己的内存栈,在这个方法内定义的变量将会逐个放入这块内存里,随着方法的结束,内存栈也随之销毁。
2 所有方法的局部变量都是放在栈内存中
五 基本数据数组的初始化
int []arr=new int[5]
for(int i=0;i<arr.length,i++)
{
arr[i]=i+10
}
六引用类型数组初始化
class Person{
int age;
double height;
public void info(){
System.out.pritln(""+age+""height);
}
}
Person [] students=new Person[2];
Person zhang=new Person();
zhang.age=10;
zhang.height=158
studens[0]=zhang;
五 二维数组 一维的一维就是二维,java没有多维数组,多维数组可以理解为数组元素为一个数组
六 操作数组 用Arrays 类
1 int binarySerch(type[]a,int fromIndex,type key);二分法查询ke元素在数组a中出现的索引,如果a数组不包含key元素值,则返回负数。调用该方法时要求数组元素已经按升序排列。
2 type[]copyOf(type[]original,int length) ;int []a={3,4,5,6} int b=Arrays.copyOf(a,6);b输出为b{3,4,5,6,0,0}
3 fill(type[]a,type val)把a数组所有元素都赋值为val
4 fill(type[]a,int fromIndex,int toIndex,type val)把a数组中的formIndex元素到toIndex赋值为 val (数组元素下标0开始)
5 sort(type[]a) 对数组元素进行排序
6 方法中带有parallel开头的方法都表示该方法可利用CPU的并行能力提高性能
七 实例 需要将一个浮点数转换成人民币法字符串
public class Num2Rmb{
private String [] hanArr={"零",“一”。。。。};
private String [] unitArr ={"十",“百”,千}
//把一个浮点数分解成整数部分和小数部分字符串
// @param num 需要被分解的浮点数
//@return 分解出来的整数部分和小数部分,第一个数组元素是整数部分,第二个是小数部分。
private String [] divide (double num){
long zheng=long(num);
long xiao=Math.round((num-zheng)*100) 四舍五入
return new String[] {zheng+"",String.valueOf(xiao)};
}
// 把一个四位的数字字符串变成 汉字字符串
//@param numStr 需要被转换的四位数字字符串
//@return 四位数字的字符串被转换成汉字字符串
public String toHanStr(String numStr){
String result="";
int numLen=numStr.length();
for (int i=0;i<numLen,i++){
//把char型数字转换成int型数字,因为他们的ASCII码值刚好相差48;例如“4”转换成 4;
int num=numStr.charAt(i)-48;
if (i!=numLen-1&&num!=0){
result+=hanArr[num]+utitArr[numLen-2-i];//添加单位
}else{
result+=hanArr[num];//不添加单位
}
return result;
}
}
}