一.构造方法
1.定义手机的标准类
成员变量:私有化 成员方法:公共访问方法set()get()
构造方法:有参/无参
2.定义
格式:方法名和类名相同 连void都没有,例如public Student(){}
作用:给对象进行数据初始化
注意事项:当我们没有写构造方法,系统默认提供一个无参构造,如果我们给出了构造(无参/有参),系统默认不在提供了,构造方法可以重载!
3.快捷键
//alt+shift+s-->c
//无参构造
public Phone() {
}
//alt+shift+s-->o
//有参构造
public Phone(String brand, int price, String color) {
this.brand = brand;
this.price = price;
this.color = color;
}
二.封装和private关键字
1.private作用
可以修饰成员(成员变量/成员方法), 外界不能访问的.被private修饰的成员只能在本类中方法访问。要提供对外的公共方法来间接的访问成员变量!
2. 成员方法:set()/get():公共访问方法
//私有的成员变量
private String name ;
private int age ;
//set()/get()公共访问方法
public String getName(){
return name ;
}
public void setName(String n){ //在main中去给姓名赋值的一个n
name = n;
}
public int getAge(){
return age ;
}
public void setAge(int a){
age = a ;
}
三.二维数组
1.定义
1)动态初始化:数据类型[][] 数组名称 = new 数据类型[m][n] ;
数据类型[] 数组名称 [] = new 数据类型[m][n] ;
m:表示二维数组中有m个一位数组,n:每一个一位数组中的长度
System.out.println(arr);//[[I@7d3598c3 :haxCode---->底层是通过哈希表中的哈希算法:可以理解为地址值
2)数据类型[][] 数组名 = new 数据类型[m][];
这种方式需要我们在代码中动态的给定每一个一位数组的长度!
例 int[][] arr = new int[2][] ;
arr[0] = new int[3] ;arr[1]= new int[2];
3)静态初始化 int[][] 数据类型 = {{元素1,元素2,元素3},{元素1,元素2,元素3}....};
例:int[][] arr = {{1,2,3},{4,5},{6}};
2.二维数组的遍历
//二维数组的遍历:外层循环:是二维数组的长度,内层循环是一维数组的长度
for(int x = 0 ; x < arr.length; x ++){
for(int y = 0 ; y < arr[x].length ; y++){
System.out.print(arr[x][y]+" ");
}
}
3.例题
需求:打印杨辉三角形(行数可以键盘录入)
public class Array2Test3 {
public static void main(String[] args) {
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
//录入并接收数据
System.out.println("请您输入一个行数(n)的值:");
int n = sc.nextInt();
//定义数组,动态初始化
int[][] arr = new int[n][n] ;
//遍历二维数据,给里面添加数据,给每一行的第一列和最后一列赋值为1
for(int x =0 ; x < arr.length ; x++){
arr[x][0] = 1 ;
arr[x][x] = 1 ;
}
//遍历其他元素:按照规律:
//从第三行开始遍历,数据等于上一行的前一列和上一行的本列之后
for(int x = 2 ; x < arr.length ; x ++){
/*
* 此时的y第一列已经有数据了,所以,从1开始
* y<=x-1 是最后一列的问题,最后一列也有值了
* */
for(int y =1 ; y <= x -1 ;y++ ){
//数据等于上一行的前一列和上一行的本列之后
arr[x][y] = arr[x-1][y-1]+ arr[x-1][y] ;
}
}
//此时:数据不是我们想要的,列数的变化和之前99乘法表一样;
for(int x = 0 ; x < arr.length ; x ++){
for(int y = 0 ; y <= x ; y++){
System.out.print(arr[x][y]+"\t");
}
System.out.println();
}
}
}
四.面向对象
1.思想概述
面向对象:创建对象,使用对象完成操作!:比如:键盘录入:Scanner sc = new Scanner(System.in);
代表:java:举例:让人给我打水,至于这个人经过了哪些过程不管,只管结果!
什么是面向对象思想?
1)更符合我们日常的一个思想行为习惯
2)我们从执行者变成指挥者
3)将一个复杂的事情简单化
2.过程
1)创建类的对象 如Student s = new Student() ;
2)调用成员变量 如s.name = "高圆圆" ;
3)调用成员方法 如s.study();
3.成员变量和局部变量的区别?
1)位置不同:
成员变量:类中方法外
局部变量:在方法定义上,或者方法定义中
2)在内存的位置不同:
成员变量:在堆内存!
局部变量:在栈内存!
3)生命周期不同
成员变量:随着类的加载而加载,随着类的对象的消失而消失
局部变量:随着方法的调用而存在,随着方法调用完毕而消失
4)初始化值不同;
成员变量:有默认的初始化值,系统根据该成员变量的类型来去给默认值
局部变量:必须有初始化值或者是在使用这个局部变量之前赋值,没有默认初始化值!
当局部变量和成员变量名称一致,就近原则输出变量的值!