Java基础知识点复习

JDK JRE JVM

JDK:
Java标准开发包,它提供了编译、运⾏Java程序所需的各种⼯具和资源,包括Java编译器、Java运⾏时环境,以及常⽤的Java类库等。


JRE:
Java运⾏环境,⽤于解释执⾏Java的字节码⽂件。

JVM
Java虚拟机,是JRE的⼀部分。负责解释执⾏字节码⽂件,是可运⾏java字节码⽂件的虚拟计算机

JDK包含JRE,JDK 和 JRE 中都包含 JVM。JDK出了包含jre还包含⼀些常⽤开发⼯具和基础类库

JDK ⽤于开发,JRE ⽤于运⾏java程序

JVM 是 java 编程语⾔的核⼼并且具有平台独⽴性(不同的平台有不同的VM)

JVM的好处:一次编译,随处运行

javac: 编译 java源⽂件->class字节码⽂件(0,1)
java: 解释

基本语法

程序结构

一个源文件中最多只能有一个public类,其他类的个数不限,如果源文件中包含一个public类,它必须按该类名命名

Java应用程序的执行入口时main()方法。它有固定的书写格式:

public static void main(String args[]){…..} 


命名规范

包名,包名是全小写的名词,中间可以由点分隔开,例如:java.awt.event;

类名,首字母大写,通常由多个单词合成一个类名,要求每个单词的首字母也要大写,例如class WelcomeToJava;

接口名,命名规则与类名相同,例如interface Collection;

方法名,往往由多个单词合成,第一个单词通常为动词,首字母小写,中间的每个单词的首字母都要大写,例如:balanceAccount, isButtonPressed;

变量名,全小写,一般为名词,例如:length;

常量名,基本数据类型的常量名为全大写,如果是由多个单词构成,可以用下划线隔开,例如:int YEAR, int WEEK_OF_MONTH;如果是对象类型的常量,则是大小写混合,由大写字母把单词隔开。

标识符:
不能以数字开头。
不能是Java中的关键字。
标识符不能是true,flase和null(尽管这三个不是关键字)


变量和常量

只有public, protected, private, static, final, transient 和 volatile 能修饰成员变量

常量

JAVA常量就是在程序中固定不变的值,是不能改变的数据。例如数字1、字符“a”、浮点数3.2等。在Java中,常量包括整型常量、浮点数常量、布尔常量、字符常量等。

使用 final 关键字来定义一个常量,常量一旦初始化就不可以被修改。

变量

变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域

每一个变量使用前必须要先声明,然后必须进行赋值,才能使用

分类:
按声明位置:
局部变量:方法或语句块内部定义的变量
成员变量:方法外部、类的内部定义的变量

在类体内定义的变量称为成员变量,它的作⽤域是整个类
在⼀个⽅法或⽅法内代码块中定义的变量称为局部变量

注意:
类外面(与类对应的大括号外面)不能有变量的声明
方法体内部声明的变量(包括形参)称为局部变量:方法体内部是指与方法对应的大括号内部
在方法体外,类体内声明的变量称为成员变量

按所属类型:
基本数据类型变量(8种)
引用数据类型变量

数据类型

boolean类型数据只允许取值true或false,不可以0或非0的整数替代true和false,这点和C语言不通

Java字符采用Unicode编码,每个字符占两个字节,因而可用十六进制编码形式表示

java中的char一定是无符号的,不允许用unsigned char修饰

基本类型转换:

boolean类型不可以转换为其他的数据类型

整型、字符型、浮点型的数据在混合运算中相互转换,转换规则:
容量小的类型自动转换为容量大的数据类型,数据类型按照容量大小排序为:
byte,short,char->int,->long->float->double
byte,short,char之间不会互相转换,三者在计算时首先转换为int型

容量大的数据类型转换为容量小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出

有多种类型的数据混合运算时,系统首先自动将所有数据类型转换为容量最大的那一种数据类型,然后在进行计算

实数常量默认为double,整数常量默认为int

数组

数组初始化
动态初始化
数组定义与为数组元素分配空间和赋值的操作分开进行

静态初始化
在定义数组的同时为数组元素分配空间并赋值

Java语言中声明数组时不能指定其长度

每个数组都有一个属性length指明它的长度

a.length的值为数组a的长度(元素个数)

输入输出

输⼊ Scanner s=new Scanner(System.in); s.nextInt() s.nextLine() s.nextFloat() scanner.next() 输出 System.out.println("XX") 


运算符与语句

运算符

左移<<
"a<<b; "将二进制形式的a逐位左移b位,最低位空出的b位补0

带符号右移
"a>>b; "将二进制形式的a逐位右移b位,最高位空出的b位补原来的符号位

无符号右移
"a>>>b;"将二进制形式的a逐位右移b位,最高位空出的b位补0

条件分支语句

switch(XX){ //java特有 枚举 short byte C语⾔:字符,int case 1 : XX ;break; case 2: XX ;break; default(可有可⽆): XX break; } 

switch表达式的返回值必须是下述几种类型之一:int, byte, char, short;

case子句中的值必须是常量,且所有case子句中的值应是不同的;

循环语句

while

for

do while

for each

修饰符

访问控制修饰符

Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。

default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。

private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)

public : 对所有类可见。使用对象:类、接口、变量、方法

protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。

非访问修饰符

为了实现一些其他的功能,Java 也提供了许多非访问修饰符。

static 修饰符,用来修饰类方法和类变量。

final 修饰符,用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。

abstract 修饰符,用来创建抽象类和抽象方法。

synchronized 和 volatile 修饰符,主要用于线程的编程。

synchronized 关键字声明的方法同一时间只能被一个线程访问。synchronized 修饰符可以应用于四个访问修饰符。

volatile 修饰符
volatile 修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值

类与对象

面对对象三⼤特征:封装、继承、多态

封装
通过 private、default 、protected、 public 关键字实现属性或⽅法的封装, 仅对外提供公共访问⽅式。
“⾼内聚,低耦合”

继承
实现数据项和⽅法的隐藏
实现隐藏隔离,允许外部对类做有限的访问,开发者可以⾃由的改变类的内部实现
提⾼了代码的重⽤性

多态
⼀个对象变量可以指向多种实际类型对象的现象被称为“多态”
三个必要条件:继承、⽅法的重写、⽗类⼸|⽤指向⼦类对象
多态的好处:
提⾼了代码的维护性(继承保证);提⾼了代码的扩展性
Java中多态的实现⽅式:接⼝实现,继承⽗类进⾏⽅法重写,同个类中进⾏⽅法重载。⽗类⼸|⽤指向⼦类对象



类是用于描述同一类型的对象的一个抽象的概念,类中定义了这一类对象所应具有的静态和动态属性

类的定义包括:类声明,类体

类可以看成一类对象的模板,对象可以看成该类的一个具体实例

对象可以看成是静态属性(成员变量)和动态属性(方法)的封装体


对象的创建和使用

必须使用new关键字创建对象

使用对象(引用).成员变量或来引用对象的成员变量

使用对象(引用).方法(参数列表)来调用对象的方法

同一类的每个对象有不同的成员变量存储空间

同一类的每个对象共享该类的方法

构造方法

作用:主要⽤来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符⼀起使⽤在创建对象的语句中。

注意 :

⼀个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们,即构造函数的重载

使用new+构造方法创建一个新的对象

构造函数的名字必须和所在类名字完全相同

构造函数与类同名且没有返回值

如果没有编写指定构造函数时,编译会自动添加无参数的构造函数

特别: 构造函数不能用final,static,abstract修饰
为什么?
1.final修饰函数的主要目的是避免函数被重写,构造器不是通过继承得到的,所以没有必要把它声明为final的。
2.同理,一个抽象的构造器将永远不会被实现,所以它也不能声明为abstract的。
3.构造器总是关联一个对象而被调用,所以把它声明为static是没有意义的。

重载与重写

方法的重载是指一个类中可以定义有相同的名字,但参数不同的多个方法。
调用时,系统会根据不同的参数表选择对应的方法

重载:

必须载同⼀个类中

⽅法名相同

⽅法的参数的个数、顺序或类型不同

与⽅法的修饰符和或返回值没有关系

可以有同的返回类型,只要参数列表不同就可以了;

可以有不同的访问修饰符;

3、可以有不同的访问修饰符;

重写:
6. 重写的⽅法必须要和⽗类⼀模⼀样(包括返回值类型,⽅法名,参数列表)
7. 重写的⽅法可以使⽤@Override注解来标识
8. ⼦类中重写的⽅法的访问权限不能低于⽗类中⽅法的访问权限
权限修饰符 : private < 默认(什么都不写)<protected<public

posted @ 2021-07-09 17:53  zoumw  阅读(134)  评论(0)    收藏  举报