一、注释、数据类型、变量、关键字
二、类型转换、运算符、输入
三、循环、数组
四、方法
1.方法的定义、调用
定义:
例:
- 方法申明了具体的返回值类型,可以为其他类型(float、char、string甚至对象),内部必须使用return返回对应类型的数据。(返回值为int,return值的类型也必须为int)。
- 形参列表可以有多个,甚至可以没有;多个形参必须用“,”隔开,且不能给初始化值。
- 返回值类型为void表示方法不需要返回结果,内部可以不使用return返回数据。
- 方法名称:规则与变量命名一致
调用: 方法名(参数)add(1,2);
注意:
- 方法的编写顺序无所谓
- 方法与方法之间是平级关系,不能被嵌套定义
- 方法的返回值类型为void(无返回值),方法内则不能使用return返回数据。反之则必须返回对应类型的数据
- return语句下不能编写代码,因为永远执行不到
- 方法不调用就不执行,调用时必须严格匹配方法的参数情况
- 有返回值的方法调用时可以选择变量接收结果,或者直接输出调用,甚至直接调用;无返回值方法只能调用一下。
2.方法调用的内存图
方法没有被调用时候,在方法区中的字节码文件中存放
方法被调用的时候,把它从方法区提取到栈内存中执行,执行完毕后出栈
3.方法的参数传递机制
(1)基本类型的参数传递
Java的参数传递机制:值传递
- 在传输实参给方法的形参时,并不是传输实参变量本身,而是传输实参变量中存储的值,即值传递。
注意: - 实参:在方法内部定义的变量。
- 形参:方法定义时的变量。(在定义方法时候,“()”中所声明的参数)
(2)引用类型的参数传递:地址值传递,会通过地址改变原数据的值
4.方法重载
(1)方法重载的形式、作用
方法重载:同一个类中,多个方法名称相同,但形参列表不同
通过参数的不同来区分调用的是哪个方法
使用方法重载的好处:
- 对于相似功能的业务场景:可读性好,方法名称相同暗示是同一类型的功能,通过形参不同实现功能差异化的选择
(2)方法重载的识别技巧
- 只要是在同一个类中,方法名称相同,形参列表不同,那他们就是重载的方法
- 形参列表不同指的是:形参的个数、类型、顺序不同,不关心形参的名称。
5.return关键字单独使用
- return:可以立即跳出并结束当前方法的执行;return关键字单独使用可以放在任何方法中。
- return:跳出并立即结束所在方法的执行。
- break:跳出并结束当前所在循环的执行。
- continue:结束当前所在循环的当次继续,进入下一次执行。
五、面向对象基础
1.创建类和对象
设计类:
用类创建对象:
使用对象:
一个Java文件中可以定义多个class类,但只能有一个类是public修饰,而且public修饰的类名必须成为代码文件名。(建议一个文件定义一个class类)
成员变量的完整定义格式 修饰符 数据类型 变量名称 = 初始化值(一般无需指定初始化值,存在默认值。)
2.对象的内存运行机制
main方法和成员变量存储在方法区中,程序执行时把main提取到栈内存。
创建对象时,在堆内存分配内存,而只把内存的地址赋给对象值
Car c1 = new Car():
- new Car()语句在堆内存中分配实际内存
- c1 = new Car()语句把堆内存里对象的地址赋给c1
对象中的成员变量也随对象存放在堆内存里。
垃圾回收: 当堆内存中的对象 没有被任何变量引用(指向)时,就会被判定为内存中的“垃圾”,Java会自动回收这些“垃圾”。
3.构造器
构造器作用: 定义在类中的,可以用于初始化一个类的对象,并返回对象的地址。
构造器的格式:
调用构造器得到对象的格式: 类 变量名称 = new 构造器;
Car c = new Car("奔驰",23.2);
构造器的分类和作用
- 无参构造器(默认存在时):初始化对象时,成员变量的数据均采用默认值
- 有参构造器:在初始化对象的时候,同时可以接收参数为对象进行赋值。
注意事项:
- 任何类定义出来,默认就自带了无参数构造器,写不写都有。
- 一旦有了有参构造器,那么无参构造器就没有了,如果还想用无参构造器,需要手动写出来。
4.this关键字
代表当前对象的地址。 可以出现在构造器、方法中。
用于指定访问当前对象的成员变量、成员方法。
5.封装
- 面向对象的三大特征:封装、继承、多态。
- 什么是封装:告诉我们如何正确设计对象的属性和方法。
- 封装的原则:对象代表什么,就得封装对应的数据,并提供数据对应的行为。
封装思想的好处:
- 让编程变得简单,有什么事,找对象,调方法就行
- 降低学习成本,可以少学、少记,或者说压根不用记(不用记对象的那么多方法,有需要时去找就行)
如何进行封装的更好?
- 一般建议对成员变量使用private(私有、隐藏)关键字修饰进(private修饰的成员只能在当前类中访问)
- 为每个成员变量提供配套public修饰的getter、setter方法暴露其取值和赋值。
6.JavaBeen
JavaBeen也可以称为实体类,其对象可以用于在程序中封装数据。
标准JavaBean须满足如下书写要求:
- 成员变量使用private修饰。
- 提供成员变量对应的setXxx()/getXxx()方法。
- 必须提供一个无参构造器;有参构造器是可写可不写的。
7.成员变量和局部变量
区别 | 成员变量 | 局部变量 |
---|---|---|
类中位置不同 | 类中,方法外 | 常见于方法中 |
初始化值不同 | 有默认值,无需初始化 | 没有默认值,使用之前需要完成赋值 |
内存位置不同 | 堆内存 | 栈内存 |
生命周期不同 | 随着对象的创建而存在,随着对象的消失而消失 | 随着对象的调用而存在,随着方法的运行结束而消失 |
作用域 | 在所属的大括号中 |
六、String、ArrayList
String
1.String概述:
- String类定义的变量可以用于指向字符串对象,然后操作该字符串。
- Java中的所有字符串文字(例如“abc”)都为此类对象。
2.String类的特点
String常被称为不可变字符串类型,他的对象在创建后不能被更改。(字符串变量重新赋值后会创建新的内存空间,重新赋给变量)
3.字符串对象存储在
- 以 “ ” 方式给出的字符串对象,在字符串常量池中存储。
- new出的字符串对象,在堆内存里。
4.创建字符串对象的方式:
- 方式一:直接使用 “ ” 定义。
- 方式二:通过String类的构造器创建对象。
以 “ ” 方式给出的字符串对象,在 字符串常量池 中存储,而且相同内容只会在其中存储一份。
通过构造器new对象,每new一次都会产生一个新对象,放在 堆内存 中。
5.String常用API
equals:
比较内容,内容一致就返回true。
== 用来比较地址值,equals() 用来比较内容(基本数据类型用 ==,对象比较用equals() )
其他常用API:
ArrayList
1.集合
集合和数组类似,也是一种容器,用于装数据的。
数组的特点:
- 定义完成并启动后,类型确定、长度固定。
- 问题:不适合个数不能确定,且要进行增删数据的操作
集合的特点:
- 集合的大小不固定,启动后可以动态变化,类型也可以选择不固定。
- 集合非常适合做元素个数不确定,且要进行增删操作的业务场景。
- 集合提供了许多丰富好用的功能,而数组的功能很单一。
2.ArrayList集合
ArrayList集合的对象获取:
ArrayList list = new ArrayList();
ArrayList集合添加元素的方法:
public boolean add(E e)
public void add(int index,E element)
3.泛型
ArrayList:其实就是一个泛型类,可以在编译阶段约束集合对象只能操作某种数据类型。
举例:
- ArrayList:此集合只能操作字符串类型的元素。
- ArrayList:此集合只能操作整数类型的元 素。
注意:集合中只能存储引用类型,不支持基本数据类型。
如何统一ArrayList集合操作的元素类型?
- 使用泛型:<数据类型>
- ArrayList list1 = new ArrayList();