类的定义,创建及初始化
类的定义
成员属性:
如学生:
姓名:String name
年龄 : int name
成员行为:
吃饭 public void eat()
睡觉 public void sleep()
学习 public void study()
注意事项:
1.成员变量是直接定义在类当中,在方法外边
2.成员方法不要写关键字static
类的创建及使用:
通常情况下,一个类不能直接使用,需要根据一个类创建一个对象才能使用
1.导包:指出需要使用的类在什么位置
import 包名陈.类名称;
如: import cn.itcast.day06.demo1.Student
对于和当前类属于同一个包的情况,可以省略导包语句不写
2.创建:格式:
类名称 对象名 = new 类名称();
Student stu = new Student();
(创建了一个名为stu的类)
3.使用
分为两种情况:
使用成员变量:对象名.成员变量名
使用成员方法:对象名.成员方法名(参数)
(想用谁,就用对象名.谁)
注意事项:如果成员变量没有赋值,那么将会有一个默认值,规则和数组一样

一个对象的内存图:
两个对象使用同一个方法的内存图
把一个对象的地址赋值给另一个新new的对象,内存图中的变化与表示(他们俩虽然名称不一样,但他们保存的地址是相同的)
当一个对象以参数的形式传递给方法时,传递的是地址值,详解如下图:
使用对象类型作为方法的返回值:
局部变量和全局变量的差别:
1.定义的位置不一样
局部变量:在方法的内部
成员变量:在方法的外部,直接写在类当中
2.作用范围不一样
局部变量:只有方法当中才可以使用,出了方法就不能再用
成员变量:整个类可以全部通用
3.默认值不一样
局部变量:没有默认值,如果要想使用,必须手动进行赋值
成员变量:如果没有赋值,会有默认值,规则和数组一样
4.内存的位置不一样
5.生命周期不一样
局部变量:随着方法进栈而诞生,随着方法出栈而消失(通常偏短)
成员变量:随着对象创建而诞生,随着对象被垃圾回收而消失
面向对象的三大特征
封装性:
1.方法就是一种封装:
2.关键字private也是一种封装
就是将一些细节信息隐藏起来,对于外界不可见。外界直接调用即可
private的使用:
一旦使用priva te进行修饰,本类仍然可以随意访问,但超过本类的范围就不能再直接访问了,要访问得通过间接访问。
间接访问private成员变量就是定义了一对Getter/Setter方法
两个方法的使用要求是 setXxx(Xxx是需要改变的量,第一个字母得大写),可通过这样的方法对输入的数据进行一个筛选(在方法中写if else语句)。(set往里放且不能有返回值,参数类型与成员变量对应,get往外拿且getter不能有参数,且返回类型和成员变量类型相同)
ps:注意boolean类型的private,其getter类型是 isXxx
this关键字的作用:
当方法的局部变量和类的成员变量重名时,根据就近原则,优先使用局部变量
如果需要访问成员变量,需要使用格式 this.成员变量名
通过谁调用方法,谁就是this
此处的this就是person
构造方法:
1.构造方法的名称必须和所在类的名称完全一样,就连大小写也一样
2.构造方法不要写返回值类型,连void都不写
3.构造方法不能return一个具体的返回值
4.如果没有编写构造方法,编译器将会默认赠送一个构造方法,没有参数,方法体什么都不做
5.一旦编写了至少一个构造方法,那么编译器将不再默认赠送构造方法
构造标准的类:
1.所有变量都要用private关键字修饰
2.为每一个变量编写一对儿Getter/Setter方法
3.编写一个无参数的构造方法
4.编写一个全参数的构造方法
这样标准的类也叫做Java.Bean
通过编写一个类时,只需要定义局部变量,其余的用alt+insert就可以自动生成
常用API
API:
查看api文档
1.看其路径
2.看其构造方法摘要(不需要全部记住,记住常用的即可)
3.看方法摘要
引用类型一般使用步骤
1.导包
import 包路径.类名称
如果需要使用的目标类,和当前类位于同一包下,则可以省略包的语句不写
只有java.lang包下的内容不需要导包,其他的包都需要import语句
2.创建
类名称 对象名 = new 类名称();
3.使用
对象名.成员方法名();
如Scanner
import java.util.Scanner //导包
Scanner sc = new Scanner(System.in); //System.in指从键盘进行输入
sc.nextInt(); //使用
如果想要获得字符串: String str = sc.nent();
(其实我们输入的一切都是字符串,nextInt是将我们输入的字符串转换为了整型的数)
匿名对象
定义:
匿名对象就是只有右边的对象,没有左边的名字和赋值运算符
new 类名称()
注意事项:
匿名对象只能使用唯一的一次,下次再用不得不再创建一个新对象
使用建议:
如果确定一个使用对象只需要使用一次,就可以用匿名对象
匿名对象作为方法的参数和返回值:
如 int num = new Scanner(System.in).nextInt();
正常的:Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
匿名对象也可作为方法的参数
method(new Scanner(System.in));
也可作为方法的返回值:
return new Scanner(System.in);
Random类
概念:
使用步骤
1.导包
import java.utli.Random;
2.创建
Random r = new Random(); //小括号留空
3.使用
int num = r.nextInt();
获取一个随机的int数字(范围是int所有的范围,有正负两种)
int num = r.nextInt(3);
实际上代表的含义是:[0,3),也就是 0-2 和数组是类似的
若强制要求返回的是[1,3],整体加1即可 (即 int num = r.nextInt(3) + 1)
对象数组
概念:
数组除了可以存储常量,字符串,也可以存储对象
如:
Person[] array = new Person [3];
Person one = new Person(“小红”,18);
Person two = new Person(“小明”,19);
Person three = new Person(“小郑”,22);
array[0] = one;
array[1] = two;
array[2] = three;
有一个缺点:一旦创建,程序运行期间长度不发生改变
ArrayList集合
数组的长度不可以发生改变,但是ArrayList集合的长度可以发生改变
对于ArrayList来说,
注意:泛型只能是引用类型,不能是基本类型
注意事项:
1.对于ArrayList集合来说,直接打印得到的不是地址值,而是内容
2.如果内容为空,得到的不是地址值而是空的括号 []
ArrayList中的常用方法:
1.public boolean add(E e) 向集合当中添加元素,参数的类型和泛型一致
备注:对于ArrayList集合来说,add添加动作是一定成功的,所以返回值可用可不用
2.public E get(int index) 从集合中获取元素,参数是索引编号,返回值就是对应位置的元素
3.public E remove(int index) 从集合中删除元素,参数是索引编号,返回值就是删掉的元素
4.public int size() 获取集合的尺寸长度,返回值是集合中包含的元素
遍历集合:
for (int i = 0; i < list.size() ; i++) {
System.out.println(list.get(i));
} //list.fori_
存储规范:
泛型中存储的必须是引用类型,像byte,short,double,int不能直接存储在ArrayList中,但可以将他们转换为引用型
| int | Interger |
|---|---|
| byte | Byte |
| long | Long |
| char | Character |
| double | Double |
| boolean | Boolean |
从jkd1.5开始就支持自动装箱,自动拆箱
自动装箱: 基本类型 —> 包装类型
自动拆箱:包装类型 —>基本类型
