实训笔记
- 6.5
- 一、座右铭
- 二、上周回顾
- Java基本语法
- 1、Java的安装和环境变量的配置
- 2、Java的标识符、关键字和保留字
- 3、Java中的变量和常量、字面量
- 4、数据类型
- 5、运算符
- 6、流程控制
- 7、数组
- 8、JVM内存图
- 9、面向对象的两大概念-类和对象
- 三、类的组成
- 3.1 属性的声明和使用
- 3.1.1 属性的完整声明语法:
- 3.1.2 属性的分类
- 3.1.3 属性的调用
- 3.1.4 属性的初始化问题:
- 3.2 方法的声明和使用
- 3.2.1 方法的完整的声明语法
- 3.2.2 方法的调用
- 3.2.3 方法的分类
- 3.2.4 方法的返回值
- 3.6.5 方法名的问题
- 3.6.6 方法的形参列表
- 3.2.7 方法JVM内存图
- 3.2.8 方法的重载
- 3.3 构造器的声明和使用
- 3.3.1 构造器的定义
- 3.3.2 构造器的使用
- 3.3.3 类中的默认构造器的问题
- 3.3.4 构造器和构造参数的问题
- 3.3.5 构造器JVM内存图的问题
6.5
一、座右铭
我的故事你说,我的文字我落,我值几两你定,我去何方我挑。
二、上周回顾
Java基本语法
1、Java的安装和环境变量的配置
JDK、JRE、JVM的区别
环境变量的配置
2、Java的标识符、关键字和保留字
- 包名:纯小写
- 类名:大驼峰命名法
- 方法名和属性名:小驼峰命名法
- static final 修饰的属性名:全大写加_
3、Java中的变量和常量、字面量
【注意】
(1)变量、常量必须初始化之后才能使用,如果没有初始化直接使用,就会报错
(2)变量的分类:
-
局部变量:必须显示的初始化(手动)
前面只能被final修饰 -
成员变量(属性):可以显示初始化,也可以使用JVM默认初始化
可以被访问控制修饰符、static、final
4、数据类型
(1)基本数据类型-严格意义来说是Java的”耻辱“
四类八种:整数byte short int long、浮点数float double、字符型char、布尔型boolean
【注意】
①char类型的ASCII编码,可以将一个字符转成数字的格式
a 97 A 95
②基本数据类型的类型转换:自动类型提升、强制类型转换
(2)引用数据类型:类、数组、接口
5、运算符
赋值运算符:+= -+ ……
算术运算符:+ / ++ –
比较运算符:==
逻辑运算符:&& & || |
位运算符:原码 反码 补码 << >>
三元运算符:特殊的分支流程
6、流程控制
顺序流程:JVM内存中的程序计数器
分支流程:if分支 switch case分支
**【注意】**switch能匹配的值的类型:byte short char int String enum
case穿透
循环流程:for while do while
**【注意】**循环的四要素、多重循环
7、数组
【注意】
①数组的四个核心概念:数组名、数组的长度、数组的索引、数组存放的元素类型
②数组中可以存放基本数据类型、也可以存放引用数据类型,但是数组本身是引用类型的
③如果数组中存放的数据类型,也满足类型的转换规则
8、JVM内存图
JVM内存分为:虚拟机栈区、堆区、本地方法栈区、程序计数器、独立于JVM之外存在于直接内存中空间:元数据区
9、面向对象的两大概念-类和对象
类的组成:属性、方法、代码块、构造器、内部类
三、类的组成
3.1 属性的声明和使用
3.1.1 属性的完整声明语法:
访问控制修饰符 [static] [final] 数据类型 属性名 [= 值];
3.1.2 属性的分类
- 静态属性:在类加载的时候在元数据区域初始化操作,只会存在一份
- 非静态属性:在创建对象的时候才会在堆区进行初始化操作,一个对象初始化一份
3.1.3 属性的调用
对象名.属性名
静态属性:
可以直接使用类名.属性名
3.1.4 属性的初始化问题:
属性也是变量,需要初始化之后才能使用,但是属性无需手动初始化,如果没有初始化的话,在类加载或者构建对象的时候会赋予默认值
例外:
为了避免属性的调用异常,static final修饰的属性必须显示的手动初始化
3.2 方法的声明和使用
3.2.1 方法的完整的声明语法
访问控制修饰符 [static] [final] 返回值类型 方法名-小驼峰(形参列表) {
方法体;
【注意事项】:如果方法有返回值类型的话,必须在方法体的逻辑上的最后一行还有return+返回值类型的数据 方式返回针对性的值
}
3.2.2 方法的调用
-
语法:
所有方法:对象名.方法名(实参列表);
静态方法:类名.方法名(实参列表)
3.2.3 方法的分类
-
静态方法:在类加载的时候在元数据区域声明了方法,在内存只存在一份
-
非静态方法在对象创建的时候在堆区域声明了方法,在内存存在无数份
*****【注意】
- 方法和方法之间是可以相互调用的,调用的时候有一些规则必须要遵守
- static修饰的方法无法调用非static修饰的方法
- 非static修饰的方法可以调用static修饰的方法
- 方法当中也可以直接使用本类中声明的属性,使用也必须满足静态调用规则
代码:
package method; public class Demo01 { public static String name; public static int age; public static void eat() { Demo01 d = new Demo01(); d.run(); System.out.println(name); //System.out.println(age); } public void run() { eat(); System.out.println(name); System.out.println(age); } public static void main(String[] args) { eat(); } }
3.2.4 方法的返回值
方法有返回值的,返回值的类型可以是任何数据类型,同时返回值类型还可以是一种特殊的返回值void
如果方法的返回值类型不是void,那么我们必须在方法体的逻辑上的最后一行使用return+返回值类型数据的定义方式定义返回值
不管是静态方法还是非静态方法都要声明返回值的
3.6.5 方法名的问题
方法名也是Java中标识符,除了满足标识符的四个要求之外,还必须满足小驼峰命名法。studentName
3.6.6 方法的形参列表
形参是方法在调用的时候,必须要传递进去的一些参数,方法可以有0个形参,也可以只有1个形参,也可以有多个形参。
- 形参列表的声明语法
(数据类型形参名,数据类型形参名,……)
-
形参就是方法的局部变量,局部变量没有被初始化,当我们调用方法时,必须按照形参的数据类型和顺序传递对应的数据值,传递数据值以后,局部变量就会在内存中自动初始化
-
**【注意】:**形参列表有一种特殊的形参,可变形参,在有些情况下,方法传递的参数的值的个数不确定的,但是参数的类型是确定的,可变长形参等同于数组,使用组完全一致,但是可变长形参可以不用传递任何的数据。
- 语法:
数据类型...... 形参名
-
可变长形参的使用就是数组的使用方式
-
可变长形参使用有一些注意事项:
3.2.7 方法JVM内存图
3.2.8 方法的重载
理论上同一个类中方法名必须是唯一的,但是在满足某些条件的基础之上,我们可以让同一个类中出现同名的多个方法。同名的多个方法成为方法的重载。
在类中,确实同一种方法可能因为参数问题需要定义多个重名方法,那么此时这些方法成为方法重载,可以在同一个类中存在多个重载方法。
【注意】方法重载必须满足如下条件
- 必须在同一个类中
- 方法重载只和形参列表有关系,和返回值没有任何关系
- 只要形参满足三个条件的任意一种,都可以构成方法重载(参数的个数、参数的类型、参数的顺序)
3.3 构造器的声明和使用
3.3.1 构造器的定义
构造器其实也是一个方法,比较特殊的方法,构造器在很多情况下也叫构造方法,构造方法是专门用来创建该类对象实例的一个方法。
语法:构造方法的返回值就是该类的对象,构造方法的方法名必须是类名
访问控制修饰符类名-构造器方法名(形参列表){
构造体;
}
【注意】构造器可以有多个,只需要满足方法的重载的条件即可。
3.3.2 构造器的使用
构造器的使用说白了就是对象的创建语法:
类名对象名=new构造器的名字-类名(实参列表);
3.3.3 类中的默认构造器的问题
如果一个类中没有声明任何的构造器,那么类在编译的时候会给类中的class文件中自动添加一个public修饰的无参构造器。
一旦我们手动在类中声明了构造器,不管是无参的还是有参的,Java就不会给我们提供了无参构造器了,如果你想使用无参构造器,那么此时就必须手动声明了。
3.3.4 构造器和构造参数的问题
构造参数默认情况下就是给类中的属性进行赋值操作的。
方法中局部变量名可以和属性名重复的,但是重复之后,如果在方法中直接使用变量名获取的是局部变量,如果方法中使用属性,属性名前面要加上this.属性名。
3.3.5 构造器JVM内存图的问题
构造器也是一个方法,执行的时候需要方法入栈。