Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

介绍

Java是一种广泛使用的计算机编程语言,拥有跨平台面向对象泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。

面向对象意味着程序通过“对象”来组织和运行。而在 Java 中,类(class)是对象的模板,描述了对象的属性和行为。

类中可以包含:

  • 字段(field):用来表示对象的数据。
  • 方法(method):用来定义对象能做的事。

例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Person {
// 字段
String name;
int age;

// 方法
void sayHello() {
System.out.println("Hello, my name is " + name);
}
}

// 使用类
public class test {
public static void main(String[] args) {
Person p = new Person(); // 创建对象
p.name = "Alice";
p.age = 20;
p.sayHello(); // 调用方法
}
}

Hello World

1
2
3
4
5
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
  • public class HelloWorld:定义了一个类,类名必须和文件名一致(区分大小写),所以这份文件必须取名为HelloWorld.java
  • public static void main(String[] args):这是 Java 程序的入口方法,运行时会从这里开始执行。

    • String[] args:用来接收命令行参数,比如运行时 java HelloWorld a b cargs 就是 ["a","b","c"]
    • String args[]String[] args 都可以执行,但推荐使用 String[] args,这样可以避免歧义和误读。
  • System.out.println("Hello, World!");:向控制台输出 "Hello, World!"

注意,一份java文件里最多只能有一个public class

基础

注释

单行注释:

1
2
3
// 注释

/* 注释 */

多行注释:

多行注释以 /*开始,以*/结束:

1
2
3
4
/* 
多行
注释
*/

文档注释:
文档注释以 /** 开始,以 */ 结束

1
2
3
4
/**
* 这是一个文档注释示例
* 它通常包含有关类、方法或字段的详细信息
*/

运算符与表达式:

  • 算术:+ - * / %
  • 关系:> < >= <= == !=
  • 逻辑:&& || !
    • &&:and
    • ||:or
    • !:not
  • 自增自减:i++++i(前置先加后用;后置先用后加)
  • 三元运算:result = (cond) ? a : b;

条件判断

if / else

1
2
3
4
5
6
7
8
int score = 85;
if (score >= 90) {
System.out.println("A");
} else if (score >= 80) {
System.out.println("B");
} else {
System.out.println("C");
}

switch(适合离散值分支)

1
2
3
4
5
6
String role = "admin";
switch (role) {
case "admin" -> System.out.println("有全部权限");
case "user" -> System.out.println("普通权限");
default -> System.out.println("未知角色");
}

循环

for

1
2
3
for (int i = 0; i < 5; i++) {
System.out.println("i=" + i);
}
1
2
3
4
int[] arr = {1,2,3};
for (int v : arr) {
System.out.println(v);
}

while

1
2
3
4
5
int i = 3;
while (i > 0) {
System.out.println(i);
i--;
}

do-while

1
2
3
4
int x = 0;
do {
System.out.println("执行一次");
} while (x > 0);

数据类型

内置数据类型

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

byte:

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

short:

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

int:

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

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 = 100000Llong b = -200000L
    “L”理论上不分大小写,但是若写成”l”容易与数字”1”混淆,不容易分辩。所以最好大写。

float:

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

double:

  • double 数据类型是双精度、64 位、符合 IEEE 754 标准的浮点数;

  • 浮点数的默认类型为 double 类型;

  • double类型同样不能表示精确的值,如货币;

  • 默认值是 0.0d

  • 例子:

    1
    2
    3
    4
    5
    double   d1  = 7D ;
    double d2 = 7.;
    double d3 = 8.0;
    double d4 = 8.D;
    double d5 = 12.9867;

    7 是一个 int 字面量,而 7D,7. 和 8.0 是 double 字面量。

boolean:

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

char:

  • char 类型是一个单一的 16 位 Unicode 字符;
  • 最小值是 \u0000(十进制等效值为 0);
  • 最大值是 \uffff(即为 65535);
  • char 数据类型可以储存任何字符;
  • 例子:char letter = ‘A’;。

byte、int、long、和short都可以用十进制、16进制以及8进制的方式来表示。

前缀 0 表示 8 进制,而前缀 0x 代表 16 进制, 例如:

1
2
3
int decimal = 100;
int octal = 0144;
int hexa = 0x64;

Java语言支持一些特殊的转义字符序列。

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

修饰符

Java语言提供了很多修饰符,主要分为以下两类:

  • 访问修饰符
  • 非访问修饰符

修饰符用来定义类、方法或者变量,通常放在语句的最前端。我们通过下面的例子来说明:

1
2
3
4
5
6
7
8
9
public class ClassName {
// ...
}
private boolean myFlag;
static final double weeks = 9.5;
protected static final int BOXWIDTH = 42;
public static void main(String[] arguments) {
// 方法体
}

访问控制修饰符

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

  • default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
  • private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
  • public : 对所有类可见。使用对象:类、接口、变量、方法
  • protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)

访问控制:

修饰符 当前类 同一包内 子孙类(同一包) 子孙类(不同包) 其他包
public Y Y Y Y Y
protected Y Y Y Y/N N
default Y Y Y N N
private Y N N N N