一,数组
1,定义过程:
①,在内存中开辟连续的空间,用来存放数据
②,给数组完成初始化过程,给每个元素赋予默认值,int的默认值为0;
③.数组完成初始化,并给每个元素赋予一个对应的地址
注:数组一旦定义,就不能被改变
2.数组的初始化
①静态创建:
public class Demo03 { public static void main(String[] args) { char[] arr= {'H','e','l','l','o','W','o','r','l','d'}; char[] arr2 =new char[]{'H','e','l','l','o','W','o','r','l','d'}; for (char a:arr){ System.out.print(a);//HelloWorld } for (char a:arr2){ System.out.print(a);//HelloWorld }
System.out.print(arr);HelloWorld
} }
②动态创建:
public class Demo04 { public static void main(String[] args) { char[] arr = new char[10]; arr[0]='H'; arr[1]='e'; arr[2]='l'; arr[3]='l'; arr[4]='o'; arr[5]='W'; arr[6]='o'; arr[7]='r'; arr[8]='l'; arr[9]='d'; for (int i=0;i<10;i++){ System.out.print(arr[i]);//HelloWorld }
System.out.print(arr);HelloWorld
} }
3.定义String数组
import java.util.Arrays;
public class Demo05 {
public static void main(String[] args) {
String[] arr = {"HelloWorld"};
System.out.println(arr);//[Ljava.lang.String;@4554617c:地址
System.out.println(Arrays.toString(arr));//[HelloWorld]
System.out.println(arr[0]);//HelloWorld
}
}
注:String是引用类型变量,保存的数组的地址值,但由于java对char类型做了底层处理,所以char[] 可以直接打印具体内容,但除了char类型以外,其它任何类型想要查看数组中的具体元素需要使用数组的工具类Arrays的(toString)数组名。
4.角标越界异常
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException
数组所取的长度大于数组定义的长度,如:
int[] arr={6};
for (int i=0;i<8;i++){
System.out.println(arr[i]);
}
5.工具类的sort方法:对数组进行排序(小-->大)
public static void main(String[] args) {
int[] arr={6,3,45,6,7,9,23,43};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
}
二, Arrays工具类
1.copyOf()方法:
①
public static void main(String[] args) {
int[] arr={1,2,3,4,5};
//数组的复制
int[] to = Arrays.copyOf(arr,arr.length);//(数组,新数组长度)
System.out.println(Arrays.toString(to));//可以应用于数组的扩容和缩容
}
② 缩容
int[] arr= {1,2,3,4,5};
//缩容
int[] to2= Arrays.copyOf(arr,3);
System.out.println(Arrays.toString(to2));
③ 扩容
int[] arr= {1,2,3,4,5};//扩容
int[] to3 =Arrays.copyOf(arr,10);
System.out.println(Arrays.toString(to3));
④.copyOfRange方发
int [] to4 = Arrays.copyOfRange(arr,2,4);
System.out.println(Arrays.toString(to4));
//注:截取的下标是根据数组的下标决定的(含头不含尾)
三,面对对象
概念:面对对象是一种编程思想:比如把大象装冰箱里,一共分三步
第一步:打开冰箱
第二部:把冰箱放进去
第三步:关上冰箱
1,面对对象三大特征
①封装:把相关的类封装成一个类的组件
②继承:是子类共享弗雷的属性和方法,这是类之间的一种关系
③多态:增强软件的灵活性和通用性
2,类和对象
通过class设计手机的类及如何建立对象调用手机类的属性和方法
public class TestCreateClass {
public static void main(String[] args) {
phone p = new phone();
p.color="白色";
p.massage();//发短信
System.out.println(p.color);//白色
}
}
//特点:品牌,尺寸,颜色,价格...
//功能:打电话,发短信,看直播
class phone{//封装手机的特征与行为
String brand;//品牌
String color;//颜色
String size;//尺寸
String price;
public void call(){
System.out.println("打电话");
}
public void massage(){
System.out.println("发短信");
}
public void video(){
System.out.println("看直播");
}
}
3,对象中的属性都是有默认值的
TIPS:栈与队列指的是一种数据结构
栈:先进后出,存放引用类型变量
堆:先进先出,存放对象