JAVA基础知识复习(九)

本文最后更新于:December 7, 2021 am

JAVA基础知识复习(九)。

目录

1.Java 基础语法

  • 大小写敏感:Java是大小写敏感的,这就意味着标识符Hello与hello是不同的。
  • 类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass 。
  • 方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。
  • 源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记Java是大小写敏感的),文件名的后缀为.java。(如果文件名和类名不相同则会导致编译错误)。
  • 主方法入口:所有的Java 程序由public static void main(String[] args)方法开始执行。

1.1 Java 标识符

Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
Java标识符注意:

所有的标识符都应该以字母(A-Z或者a-z),美元符($)、或者下划线(_)开始
首字符之后可以是任何字符的组合
关键字不能用作标识符
标识符是大小写敏感的
合法标识符举例:age、$salary、_value、__1_value
非法标识符举例:123abc、-salary

1.2 Java 关键字

关键字 描述
abstract 抽象方法,抽象类的修饰符
assert 断言条件是否满足
boolean 布尔数据类型
break 跳出循环或者label代码段
byte 8-bit 有符号数据类型
case switch语句的一个条件
catch 和try搭配捕捉异常信息
char 16-bit Unicode字符数据类型
class 定义类
const 未使用
continue 不执行循环体剩余部分
default switch语句中的默认分支
do 循环语句,循环体至少会执行一次
double 64-bit双精度浮点数
else if条件不成立时执行的分支
enum 枚举类型
extends 表示一个类是另一个类的子类
final 表示一个值在初始化之后就不能再改变了 表示方法不能被重写,或者一个类不能有子类
finally 为了完成执行的代码而设计的,主要是为了程序的健壮性和完整性,无论有没有异常发生都执行代码。
float 32-bit单精度浮点数
for for循环语句
goto 未使用
if 条件语句
implements 表示一个类实现了接口
import 导入类
instanceof 测试一个对象是否是某个类的实例
int 32位整型数
interface 接口,一种抽象的类型,仅有方法和常量的定义
long 64位整型数
native 表示方法用非java代码实现
new 分配新的类实例
package 一系列相关类组成一个包
private 表示私有字段,或者方法等,只能从类内部访问
protected 表示字段只能通过类或者其子类访问 子类或者在同一个包内的其他类
public 表示共有属性或者方法
return 方法返回值
short 16位数字
static 表示在类级别定义,所有实例共享的
strictfp 浮点数比较使用严格的规则
super 表示基类
switch 选择语句
synchronized 表示同一时间只能由一个线程访问的代码块
this 表示调用当前实例 或者调用另一个构造函数
throw 抛出异常
throws 定义方法可能抛出的异常
transient 修饰不要序列化的字段
try 表示代码块要做异常处理或者和finally配合表示是否抛出异常都执行finally中的代码
void 标记方法不返回任何值
volatile 标记字段可能会被多个线程同时访问,而不做同步
while while循环

1.3 Java 注释

Java支持单行以及多行注释。注释中的字符将被Java编译器忽略。

单行注释

1
2
// 这是单行注释的示例
/* 这个也是单行注释的示例 */

多行注释

1
2
3
4
/* 这是第一个Java程序
*它将打印Hello World
* 这是一个多行注释的示例
*/

2.Java 对象和类

  • 对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
  • 类:类是一个模板,它描述一类对象的行为和状态。

2.1 Java 类

类可以看成是创建 Java 对象的模板。
实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
public class Dog{
String breed;
int age;
String color;
void barking(){
}

void hungry(){
}

void sleeping(){
}
}

一个类可以包含多种类型变量,如:局部变量、成员变量、类变量。一个类可以拥有多个方法。

  • 局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
  • 成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。
  • 类变量:类变量也声明在类中,方法体之外,但必须声明为 static 类型。

2.1.1 类访问控制

控制类成员变量和方法的访问级别通过访问说明符。Java的访问说明符是public,private,protected和默认访问级别。

公共类成员可以通过任何其他代码访问。私有类成员只能在其类中访问。默认访问类成员没有访问说明符。 类的默认功能可以在同一个包中的任何类访问。类的受保护特性可用于同一个包(如默认)中的所有类及其子类。受保护的功能比默认功能更容易访问。

2.1.2 成员访问和继承

子类不能访问超类的私有成员。
实例:

1
2
3
4
5
6
7
8
9
10
class A {
private int j; // private to A
}
class B extends A {
int total;

void sum() {
total = j; // ERROR, j is not accessible here
}
}

2.2.3 访问矩阵图示

位置 私人的(private) 无修饰符 保护(protected) 公开(public)
相同类
相同的包子类 ×
相同的包非子类 ×
不同的包子类 × ×
不同的包非子类 × × ×

2.2.4 访问修饰符及其目标

并非所有修改器都可以应用于所有功能。顶级类可能不受保护。方法可能不是短暂的。静态可以将其应用于自由浮动代码块。

显示了功能和修改器的所有可能组合。yes表示我们可以使用该修饰符来控制对应实体的访问。

修饰符 变量 方法 构造函数 代码块
public yes yes yes yes no
protected no yes yes yes no
empty accessor yes yes yes yes yes
private no yes yes yes no
final yes yes yes no no
abstract yes no yes no no
static no yes yes no yes
native no no yes no no
transient no yes no no no
volatile no yes no no no
synchronized no no yes no yes

2.2 构造方法

每个类都有构造方法。如果没有显式地为类定义构造方法,Java编译器将会为该类提供一个默认构造方法。在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。
实例:

1
2
3
4
5
6
7
8
public class Puppy{
public Puppy(){
}

public Puppy(String name){
// 这个构造器仅有一个参数:name
}
}

2.3 创建对象

对象是根据类创建的。在 Java 中,使用关键字 new 来创建一个新的对象。
步骤:声明、实例化、初始化。

  • 声明:声明一个对象,包括对象名称和对象类型。
  • 实例化:使用关键字 new 来创建一个对象。
  • 初始化:使用 new 创建对象时,会调用构造方法初始化对象。

实例:

1
2
3
4
5
6
7
8
9
10
public class Puppy{
public Puppy(String name){
//这个构造器仅有一个参数:name
System.out.println("Puppy Name is :" + name );
}
public static void main(String []args){
// 下面的语句将创建一个Puppy对象
Puppy myPuppy = new Puppy( "tommy" );
}
}

2.4 访问实例变量和方法

通过已创建的对象来访问成员变量和成员方法。
实例:

1
2
3
4
5
6
/* 实例化对象 */
ObjectReference = new Constructor();
/* 访问其中的变量 */
ObjectReference.variableName;
/* 访问类中的方法 */
ObjectReference.MethodName();

2.5 源文件声明规则

  • 一个源文件中只能有一个 public 类
  • 一个源文件可以有多个非public类
  • 源文件的名称应该和 public 类的类名保持一致。例如:源文件中 public 类的类名是 Employee ,那么源文件应该命名为 Employee.java 。
  • 如果一个类定义在某个包中,那么 package 语句应该在源文件的首行。
  • 如果源文件包含 import 语句,那么应该放在 package 语句和类定义之间。如果没有 package 语句,那么 import 语句应该在源文件中最前面。
  • import 语句和 package 语句对源文件中定义的所有类都有效。在同一源文件中,不能给不同的类不同的包声明。

2.6 Import语句

在 Java 中,如果给出一个完整的限定名,包括包名、类名,那么 Java 编译器就可以很容易地定位到源代码或者类。 Import 语句就是用来提供一个合理的路径,使得编译器可以找到某个类。
实例:

1
import java.io.*;

3.Java 基本数据类型

Java的两大数据类型:内置数据类型、引用数据类型。

3.1 内置数据类型

八种基本类型。
六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。

3.1.1 byte

  • byte数据类型是8位、有符号的,以二进制补码表示的整数;
  • 最小值是-128(-2^7);
  • 最大值是127(2^7-1);
  • 默认值是0;
  • byte类型用在大型数组中节约空间,主要代替整数,因为byte变量占用的空间只有int类型的四分之一;

例子:byte a = 100,byte b = -50。

3.1.2 short

  • short数据类型是16位、有符号的以二进制补码表示的整数
  • 最小值是-32768(-2^15);
  • 最大值是32767(2^15 - 1);
  • Short数据类型也可以像byte那样节省空间。一个short变量是int型变量所占空间的二分之一;
  • 默认值是0;

例子:short s = 1000,short r = -20000。

3.1.3 int

  • int数据类型是32位、有符号的以二进制补码表示的整数;
  • 最小值是-2,147,483,648(-2^31);
  • 最大值是2,147,483,647(2^31 - 1);
  • 一般地整型变量默认为int类型;
  • 默认值是0;

例子:int a = 100000, int b = -200000。

3.1.4 long

  • long数据类型是64位、有符号的以二进制补码表示的整数;
  • 最小值是-9,223,372,036,854,775,808(-2^63);
  • 最大值是9,223,372,036,854,775,807(2^63 -1);
  • 这种类型主要使用在需要比较大整数的系统上;
  • 默认值是0L;

例子: long a = 100000L,long b = -200000L。

3.1.5 float

  • float数据类型是单精度、32位、符合IEEE 754标准的浮点数;
  • float在储存大型浮点数组的时候可节省内存空间;
  • 默认值是0.0f;
  • 浮点数不能用来表示精确的值,如货币;

例子:float f1 = 234.5f。

3.1.6 double

  • double数据类型是双精度、64位、符合IEEE 754标准的浮点数;
  • 浮点数的默认类型为double类型;
  • double类型同样不能表示精确的值,如货币;
  • 默认值是0.0d;

例子:double d1 = 123.4。

3.1.7 boolean

  • boolean数据类型表示一位的信息;
  • 只有两个取值:true和false;
  • 这种类型只作为一种标志来记录true/false情况;
  • 默认值是false;

例子:boolean one = true。

3.1.8 char

  • char类型是一个单一的16位Unicode字符;
  • 最小值是’\u0000’(即为0);
  • 最大值是’\uffff’(即为65,535);
  • char数据类型可以储存任何字符;

例子:char letter = ‘A’。

实际上,JAVA中还存在另外一种基本类型void,它也有对应的包装类 java.lang.Void,不过我们无法直接对它们进行操作。

3.2 Java特殊的转义字符

符号 字符含义
\n 换行 (0x0a)
\r 回车 (0x0d)
\f 换页符(0x0c)
\b 退格 (0x08)
\0 空字符(0x0)
\s 字符串
\t 制表符
\“ 双引号
\‘ 单引号
\\ 反斜杠
\ddd 八进制字符 (ddd)
\uxxxx 16进制Unicode字符 (xxxx)


本文作者: 墨水记忆
本文链接: https://tothefor.com/DragonOne/654124631.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!