-
计算机沟通的语言就是计算机编程语言(Java)
-
位(bit):一个数字0或者一个数字1,代表一位。
-
字节(Byte):每逢8位是一个字节,这是数据存储的最小单位。
-
1024的用二进制表示是100 0000 0000
1 Byte = 8 bit 1 KB = 1024 Byte 1 MB = 1024 KB 1 GB = 1024 MB 1 TB = 1024 GB 1 PB = 1024 TB 1 EB = 1024 PB 1 ZB = 1024 EB -
Java虚拟机,简称JVM,是Jvav程序的运行环境,我们编写的Java代码,都运行在JVM上
-
JVM本身不具备跨平台功能,每个操作系统下都有不同版本的JVM
-
JRE包含JVM和Java运行时所需要的核心类库
-
JDK包含JRE和开发人员使用的工具
-
单引号是字符常量,双引号是字符串常量
-
字符串是引用类型
-
for循环又称(计数器式循环)也就是说for循环大都是应用于明确循环次数这样的循环
-
while循环分为do while(直到型循环) 和while(当型循环)都是不定次数循环。用在循环次数不确定的情况下
-
IDEA快捷键
Alt+Enter 导入包,自动修正代码 Alt+Ins 自动生成代码,toString,get,set等方法 -
方法重载:指在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可,与修饰符和返 回值类型无关。
-
数组概念: 数组就是存储数据长度固定的容器,保证多个数据的数据类型要一致。
int[] arr = new int[3]; int[] arr = new int[]{1,2,3,4,5}; int[] arr = {1,2,3,4,5}; -
JVM 内存划分
区域名称 作用 寄存器 给CPU使用,和我们开发无关。 本地方法栈 JVM在使用操作系统功能的时候使用,和我们开发无关。 方法区 存储可以运行的class文件。 堆内存 存储对象或者数组,new来创建的,都存储在堆内存。 方法栈 方法运行时使用的内存,比如main方法运行,进入方法栈中执行。 -
数组作为方法参数传递,传递的参数是数组内存的地址
-
数组作为方法的返回值,返回的是数组的内存地址
-
类是对象的模板,对象是类的实体
-
成员变量的默认值
数据类型 默认值 基本类型 整数(byte,short,int,long) 0 浮点数(float,double) 0.0 字符(char) '\u0000' 布尔(boolean) false 数组,类,接口 null -
new 出来的对象放在堆里面
-
成员变量和局部变量的区别
- 在类中的位置不同
- 成员变量:类中,方法外
- 局部变量:方法中或者方法声明上(形式参数)
- 作用范围不一样
- 成员变量:类中
- 局部变量:方法中
- 初始化值的不同
- 成员变量:有默认值
- 局部变量:没有默认值。必须先定义,赋值,最后使用
- 在内存中的位置不同
- 成员变量:堆内存
- 局部变量:栈内存
- 生命周期不同
- 成员变量:随着对象的创建而存在,随着对象的消失而消失
- 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
- 在类中的位置不同
-
private是一个权限修饰符,代表最小权限,被private修饰后的成员变量和成员方法,只在本类中才能访问。
-
this代表所在类的当前对象的引用(地址值),即对象自己的引用。
方法被哪个对象调用,方法中的this就代表那个对象。即谁在调用,this就代表谁。
-
JavaBean 是 Java语言编写类的一种标准规范。符合 JavaBean 的类,要求类必须是具体的和公共的,并且具有无 参数的构造方法,提供用来操作成员变量的 set 和 get 方法。
-
API(Application Programming Interface),应用程序编程接口。Java API是一本程序员的 字典 ,是JDK中提供给 我们使用的类的说明文档。这些类将底层的代码实现封装了起来,我们不需要关心这些类是如何实现的,只需要学 习这些类如何使用即可。所以我们可以通过查询API的方式,来学习Java提供的类,并得知如何使用它们。
-
,表示一种指定的数据类型,叫做泛型。 E ,取自Element(元素)的首字母。在出现 E 的地方,我们使 用一种引用数据类型将其替换即可,表示我们将存储哪种引用类型的元素。
ArrayList<String> list = new ArrayList<String>(); // 在JDK 7后,右侧泛型的尖括号之内可以留空,但是<>仍然要写。简化格式: ArrayList<String> list = new ArrayList<>(); -
当 static 修饰成员变量时,该变量称为类变量。该类的每个对象都共享同一个类变量的值。任何对象都可以更改 该类变量的值,但也可以在不创建该类的对象的情况下对类变量进行操作。
-
当 static 修饰成员方法时,该方法称为类方法 。静态方法在声明中有 static ,建议使用类名来调用,而不需要 创建类的对象。调用方式非常简单。
- 静态方法可以直接访问类变量和静态方法。
- 静态方法不能直接访问普通成员变量或成员方法。反之,成员方法可以直接访问类变量或静态方法。
- 静态方法中,不能使用this关键字。
-
子父类中出现了同名的成员变量时,在子类中需要访问父类中非私有成员变量时,需要使用 super 关键字,修饰 父类成员变量,类似于之前学过的 this 。
-
在每次创建子类对象时,先初始化父类空间,再创建其子类对象本身。目的在于子类对象中包含了其对应的父类空 间,便可以包含其父类的成员,如果父类成员非private修饰,则子类可以随意使用父类成员。代码体现在子类的构 造方法调用时,一定先调用父类的构造方法。
-
继承抽象类的子类必须重写父类所有的抽象方法。否则,该子类也必须声明为抽象类。最终,必须有子类实现该父 类的抽象方法,否则,从最初的父类到最终的子类都不能创建对象,失去意义。
-
接口,是Java语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量、构造方法和成员方法,那么 接口的内部主要就是封装了方法,包含抽象方法(JDK 7及以前),默认方法和静态方法(JDK 8),私有方法 (JDK 9)。
-
在继承体系中,一个类只能继承一个父类。而对于接口而言,一个类是可以实现多个接口的,这叫做接 口的多实现。并且,一个类能继承一个父类,同时实现多个接口。
-
一个接口能继承另一个或者多个接口。
- 接口中,无法定义成员变量,但是可以定义常量,其值不可以改变,默认使用public static final修饰。
- 接口中,没有构造方法,不能创建对象。
- 接口中,没有静态代码块。
-
生活中,比如跑的动作,小猫、小狗和大象,跑起来是不一样的。再比如飞的动作,昆虫、鸟类和飞机,飞起来也 是不一样的。可见,同一行为,通过不同的事物,可以体现出来的不同的形态。多态,描述的就是这样的状态。
多态: 是指同一行为,具有多个不同表现形式。
-
当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,执行的是子类重写 后方法。
// 父类类型 变量名 = new 子类对象; // 变量名.方法名(); Fu f = new Zi(); f.method(); -
实际开发的过程中,父类类型作为方法形式参数,传递子类对象给方法,进行方法的调用,更能体现出多态的扩展 性与便利。所以,多态的好处,体现在,可以使程序编写的更简单,并有良好的扩展。
-
当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误。也就是说,不能调用子类拥 有,而父类没有的方法。编译都错误,更别说运行了。这也是多态给我们带来的一点"小麻烦"。所以,想要调用子 类特有的方法,必须做向下转型。
// 子类类型 变量名 = (子类类型) 父类变量名; Cat c =(Cat) a; -
final: 不可改变。可以用于修饰类、方法和变量。
- 类:被修饰的类,不能被继承。
- 方法:被修饰的方法,不能被重写。
- 变量:被修饰的变量,不能被重新赋值。
1.在Java中提供了四种访问权限,使用不同的访问权限修饰符修饰时,被修饰的内容会有不同的访问权限, - public:公共的。 - protected:受保护的 - default:默认的 - private:私有的
||public|protected|default(空的)|private|
|-|-|-|-|-|
|同一类中|√|√|√|√|
|同一包中(子类与无关类)|√|√|√||
|不同包的子类|√|√|||
|不同包中的无关类|√||||
-
编写代码时,如果没有特殊的考虑,建议这样使用权限:
- 成员变量使用 private ,隐藏细节。
- 构造方法使用 public ,方便创建对象。
- 成员方法使用 public ,方便调用方法。
-
内部类可以直接访问外部类的成员,包括私有成员。
-
外部类要访问内部类的成员,必须要建立内部类的对象。
// 外部类名.内部类名 对象名 = new 外部类型().new 内部类型(); // 创建外部类对象 Person p = new Person(); // 创建内部类对象 Heart heart = p.new Heart(); -
匿名是内部类的简化写法。它的本质是一个 带具体实现的 父类或者父接口的 匿名的 子类对象。
public abstract class FlyAble{ public abstract void fly(); } public class InnerDemo { public static void main(String[] args) { /* 1.等号右边:是匿名内部类,定义并创建该接口的子类对象 2.等号左边:是多态赋值,接口类型引用指向子类对象 */ FlyAble f = new FlyAble(){ public void fly() { System.out.println("我飞了~~~"); } }; //调用 fly方法,执行重写后的方法 f.fly(); } }