Java 划重点笔记

  • JAVA概述
  • 基础语法
  • 常量
  • 关键字
  • 数据类型
  • 变量
  • 标识符
  • 类型转换
  • 运算符
  • 算数运算符
  • 赋值运算符
  • 逻辑运算符
  • 短路逻辑运算符
  • 三元运算符
  • 数据输入
  • 流程控制
  • switch 分支语句
  • 循环
  • Random
  • IDEA
  • 项目结构
  • 内容辅助键和快捷键
  • 数组
  • 数组定义格式
  • 数组动态初始化
  • 内存分配
  • 数组静态初始化
  • 数组操作的2个常见问题
  • 方法
  • 方法重载
  • 方法参数传递
  • 案例:百钱百鸡
  • 面向对象
  • 类和对象
  • 类的定义
  • 对象的使用
  • 对象内存
  • 成员变量和局部变量
  • private
  • this
  • 封装
  • 构造方法
  • 字符串
  • API(应用程序编程接口)
  • String类
  • StringBuilder类
  • 集合基础
  • ArrayList
  • 学生管理系统案例记录
  • 继承
  • 继承中的变量访问
  • super关键字
  • 继承中构造方法的访问特点
  • 继承中成员方法的访问特点
  • super内存图
  • 方法重写
  • Java中继承的注意事项
  • 包与修饰符
  • 导包
  • 修饰符
  • 权限修饰符
  • 状态修饰符
  • final
  • static
  • 多态
  • 多态中成员访问特点
  • 多态的好处与弊端


JAVA概述

Java 常用的orm java ordinal_父类


Java 常用的orm java ordinal_构造方法_02


JRE:Java Runtime Environment,运行时环境,包含JVM和运行时所需要的核心类库。

JDK:Java Development Kit,程序开发工具,包含JRE和开发人员使用的工具。其中 javac.exe 是编译工具,java.exe 是运行工具。

Java 常用的orm java ordinal_子类_03

基础语法

常量

包括布尔常量;存在空常量但不能输出。

关键字

定义:关键字就是被Java语言赋予了特定含义的单词。
特点:其字母全部小写。(在一些编辑器中有颜色标记)

数据类型

Java 常用的orm java ordinal_构造方法_04


Java 常用的orm java ordinal_构造方法_05


Java 常用的orm java ordinal_子类_06

变量

  1. 变量未赋值不可使用。
  2. 变量名字不可以重复。
  3. long类型变量定义时,为防止整数过大,后面加L。
  4. float类型变量定义时,为防止类型不兼容,后面加F。
long a = 10000000000 //×
long a = 10000000000L //√
float b = 14.33 //×
float b = 14.33F //√

标识符

Java 常用的orm java ordinal_构造方法_07

Java 常用的orm java ordinal_构造方法_08

类型转换

Java类型转换分为自动和强制两类。

自动:把一个数据范围小的数值或变量赋值给另一个表示数据范围大的变量

Java 常用的orm java ordinal_父类_09


强制:赋值场景与自动相反,需要自己声明强转,否则会报错。

示例:int k =(int)88.8 ,输出为88,会有数据丢失。

运算符

算数运算符

一条老规则了:整数相除只能得到整数,有小数参与,才能得到浮点数。

Java 常用的orm java ordinal_父类_10


注意:这块知识要区分Python!(这里是字符的运算操作,不是字符串)

常见错误:
char a = ‘a’ + 5;int b = 314+3.14;

关于字符串:

Java 常用的orm java ordinal_Java 常用的orm_11


区分:“码农” + 10 + 0 + “年” 得到“码农100年”;

赋值运算符

扩展的赋值运算符(如+=)底层隐含了强制类型转换。

逻辑运算符

^:异或,相同为false,不同为true。

区分python:

python中逻辑运算符主要是 and, or, not,而&(参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0)、 |、 ^ 等是位运算符。

Java 常用的orm java ordinal_子类_12

短路逻辑运算符

Java 常用的orm java ordinal_子类_13

考虑到运算速度,最常用的逻辑运算符是&&、|| 和 ! 。

三元运算符

同二元关系运算符的多次运用一样,用多次三元运算符可以比较多个值。

数据输入

Java 常用的orm java ordinal_构造方法_14

流程控制

语句分为3类:顺序、分支、循环。

switch 分支语句

Java 常用的orm java ordinal_构造方法_15


case 穿透:若符合条件的case语句末尾没有break,则会向下执行直至遇到下一个break,或整体switch语句结束。而default后面不添加break无影响。

循环

for循环中如果内部初始化变量,则为内部变量。

Random

Java 常用的orm java ordinal_子类_16

IDEA

项目结构

Java 常用的orm java ordinal_Java 常用的orm_17


新文件作模块添加到项目目录下后在IDEA中导入模块。

内容辅助键和快捷键

Java 常用的orm java ordinal_父类_18


Java 常用的orm java ordinal_Java 常用的orm_19

数组

数组定义格式

Java中的数组是一种用于存储多个相同类型的数据的储存模型。

Java 常用的orm java ordinal_构造方法_20


(推荐格式一)

数组动态初始化

Java中的数组必须先初始化,才能使用。初始化即为数组中的数组元素分配内存空间,并为每个数组元素赋值。

Java 常用的orm java ordinal_Java 常用的orm_21


仅动态初始化后输出数组名,得到的是该数组的地址值。

获取数组元素数量:数组名.length

内存分配

Java 常用的orm java ordinal_Java 常用的orm_22


Java 常用的orm java ordinal_子类_23


Java 常用的orm java ordinal_构造方法_24

数组静态初始化

Java 常用的orm java ordinal_构造方法_25

数组操作的2个常见问题

Java 常用的orm java ordinal_Java 常用的orm_26

方法

方法是将具有独立功能的代码块组成一个整体,使其具有特殊功能的代码集。

注意:
1.先定义,后调用;
2.方法不能嵌套定义;
3.明确返回值类型和参数。

//示例
public static void xxx(……){
	//方法体
	}

方法重载

指同一个类中定义的多个方法之间的关系(仅针对方法的定义,也不通过返回值判定是否构成),若满足:

1.多个方法在同一类下;
2.多个方法具有相同的方法名;
3.多个方法的参数不同,类型不同或数量不同,

则构成重载,可按需各自调用,Java虚拟机会通过参数的不同来区分同名的方法。

Java 常用的orm java ordinal_Java 常用的orm_27

方法参数传递

对于基本类型的参数,形式参数的改变,不会影响实际参数的值。

对于引用类型的参数,形式参数的改变,影响实际参数的值。

Java 常用的orm java ordinal_构造方法_28


Java 常用的orm java ordinal_构造方法_29

案例:百钱百鸡

Java 常用的orm java ordinal_构造方法_30

面向对象

类和对象

类是对现实生活中一类具有共同属性行为的事物的抽象。类是对象的数据类型,可以理解为是满足上述条件的一组对象的集合

Java 常用的orm java ordinal_Java 常用的orm_31


Java 常用的orm java ordinal_构造方法_32

类的定义

public class ClassName{
	//成员变量
	//...
	//成员方法
	//...
	}

对象的使用

Java 常用的orm java ordinal_构造方法_33


利用package包方法,可以在另一个类文件执行主程序 或 调用其他类

对象内存

Java 常用的orm java ordinal_构造方法_34


Java 常用的orm java ordinal_父类_35

图中输出001的地址,说明Java中实例化后得到的对象名对应地址,main方法在栈内存中进行,而对象指向的信息存储在堆内存。

对于s.study() 和 s.dohomework()两个方法,执行时在栈内存中进行,执行完则消去。而到了程序的最后一行,main方法在栈内存中也会被消去。

成员变量和局部变量

Java 常用的orm java ordinal_Java 常用的orm_36

private

Java 常用的orm java ordinal_Java 常用的orm_37


Java 常用的orm java ordinal_父类_38


Java 常用的orm java ordinal_子类_39


应用:一般的业务中,一个标准类的编写应包括private修饰的成员变量,同时提供相应的getXXX()方法 和 setXXX()方法。

this

Java 常用的orm java ordinal_构造方法_40


冲突场景:成员变量和方法变量同名,而方法中识别局部变量。(若不同名,则指成员变量。)

解决:this.name = name;
this代表所在类的对象引用,this修饰的变量用于指代成员变量。

Java 常用的orm java ordinal_父类_41


Java 常用的orm java ordinal_子类_42

封装

Java 常用的orm java ordinal_构造方法_43

构造方法

构造方法作为一种特殊的方法,用于创建对象,主要是完成对象的初始化。

当未详细编写构造方法时,系统默认设定无参构造方法。可以通过方法重载编写多个构造方法。建议:无论是否使用,都手工书写无参构造方法。

Java 常用的orm java ordinal_Java 常用的orm_44


Java 常用的orm java ordinal_构造方法_45

创建对象时即可这样使用:Classname a = new Classname();

  • 标准类制作

    小技巧:Alt+Insert 可以根据自己的需要选择来自动生成构造或set/get代码。

字符串

API(应用程序编程接口)

指的就是JDK中提供的各种功能的Java类,这些类已将底层的实现封装起来。(一般Java.lang不用导包)

String类

首先,应区分基本类型char和String类。

字符串不可变,但可共享。

4种构造方法:无参、字符数组、字节数组和直接赋值。一般推荐使用最后一种。

  • 关于String对象:
    1.通过new方法创建的字符串对象,每一次new都会申请一个内存空间,地址值不同。
    2.以“”方式给出的字符串,只要字符串序列相同,JVM只会建立一个String对象。
  • Java 常用的orm java ordinal_Java 常用的orm_46


  • Java 常用的orm java ordinal_构造方法_47


  • Java 常用的orm java ordinal_Java 常用的orm_48

  • (字符串作类时属引用类型)
    字符串之间的拼接可用+实现。

StringBuilder类

Java 常用的orm java ordinal_Java 常用的orm_49


StringBuilder是一个可变的字符串类,可以把它看成一个容器。相比String类,它更节省内存空间。

Java 常用的orm java ordinal_子类_50


Java 常用的orm java ordinal_构造方法_51

集合基础

集合类提供一种储存空间可变的储存模型。集合类有很多,一般常用ArrayList类。

ArrayList

首先从java.util导包。

Java 常用的orm java ordinal_子类_52


自己定义的类也在E的范围内。

Java 常用的orm java ordinal_Java 常用的orm_53


Java 常用的orm java ordinal_Java 常用的orm_54


上图输出结果:[hello,javase,world,java]ArrayList集合常用方法:

Java 常用的orm java ordinal_父类_55

学生管理系统案例记录

1.System.exit(0);作用是JVM退出。
2.利用while循环和自设计的判断学号是否重复的函数,来实现正确录入新学号这一操作。

继承

继承是面向对象三大特征之一,可以使子类具有父类的属性和方法,还可以在子类中重新定义,追加属性和方法。

Java 常用的orm java ordinal_Java 常用的orm_56


(存在相同属性、相同特征)

//格式
public class 子类名 extends 父类名{
}

Java 常用的orm java ordinal_子类_57

继承中的变量访问

子类方法中访问变量的过程:子类局部查找->子类成员范围找->父类范围->都没有则报错(继承中访问变量这一操作,不考虑父类的父类

super关键字

Java 常用的orm java ordinal_Java 常用的orm_58

继承中构造方法的访问特点

Java 常用的orm java ordinal_父类_59

继承中成员方法的访问特点

Java 常用的orm java ordinal_父类_60


若要直接调用父类成员方法,可用super.方法名()。

super内存图

Java 常用的orm java ordinal_父类_61


注意子类构造时默认super访问父类构造。

方法重写

情景:子类中出现和父类中一模一样的方法声明
功能:即沿袭了父类的功能,又定义了子类特有的内容。

重写子类方法时,内容相同的部分可以用super.父类同名方法()来代替。

@Override:作为一个注解,检查重写方法是方法声明的正确性。

注意事项:

Java 常用的orm java ordinal_Java 常用的orm_62

Java中继承的注意事项

1.类只支持单继承,不支持多继承

2.类支持多层继承

3.实例化对象时,构造方法默认访问父类的无参构造方法(可用super访问父类中其他构造方法)。如果子类代码无成员变量定义,而想要对子类带参构造,因为this不能访问父类中的private变量(标准类编写),应用super(构造参数),通过父类中的set/get来赋值。

Java 常用的orm java ordinal_构造方法_63

Java 常用的orm java ordinal_父类_64

包与修饰符

文件夹就是包,作用是对类分类管理,如区分同名类。

// 格式
package 包名 //多级包用.分开

声明包后,应相应地把编译后得到的class文件放到正确的目录下,保证被找到,程序才能正确运行。

Java 常用的orm java ordinal_父类_65

导包

Java 常用的orm java ordinal_构造方法_66

修饰符

权限修饰符

Java 常用的orm java ordinal_Java 常用的orm_67


private:只能在同一个类中用

默认:只能在同一个包中用

protected:除了不同包中的无关类,均允许被使用

public:总是允许被用

状态修饰符

final

final关键字是“最终”的意思,可以修饰成员方法、成员变量和类。

public final void helloword{
}
# final 修饰方法,表明该方法是最终方法,不能被重写

public final int age = 20;
# final 修饰变量,表明该变量是常量,不能在被赋值

public final class NotFather{
}
# final 修饰类,表明该类是最终类,不能被继承
  • final修饰局部变量
    变量是基本类型:基本类型的数据值不能改变
    引用类型:引用类型的地址值不能改变,但是地址里面的内容仍可以改变
static

static关键字表示静态,可以修饰成员方法,成员变量

特点:
1.被类的所有对象共享——也是判断是否使用static的条件
2.可以通过类名和对象名,以赋值的形式调用。建议采用类名方式

如在类中声明静态成员变量: public static int test;

实例化对象后调用时,可这样赋值:instance.test = 1;

Java 常用的orm java ordinal_Java 常用的orm_68

多态

例如按下空格键,在不同场景有着不同的作用:跳转,空格或播放.接下来我们带上继承、重写来理解多态。

Java 常用的orm java ordinal_父类_69

多态中成员访问特点

Java 常用的orm java ordinal_Java 常用的orm_70

多态的好处与弊端

优点:提高了程序的拓展性。具体体现为定义方法的时候,使用父类型作为参数,将来使用的时候,使用具体的子类型参与操作。

Java 常用的orm java ordinal_Java 常用的orm_71


Java 常用的orm java ordinal_子类_72


缺点:不能使用子类的特有功能。