JavaSE第1篇基础语法

1.基本数据类型

Java语言作为类C语言的一种,在书写格式与变量命名规则上与C语言几乎没有区别。不同于C语言的是,C语言的命名方法深受匈牙利命名法的影响,Java语言采用的更多的是驼峰命名法。实际编程中中也应当见名知意,养成良好的习惯。

Java语言一共有8种基本的数据类型,分别为:

  • 整数类型:byte,short,int,long

  • 浮点数类型:float,double(Java中浮点数默认是double,使用float时需要在后面加f)

  • 字符类型:char(除了支持ascii码以外同时支持unicode编码)

  • 布尔类型:boolean

自动转换
将较小的类型转换为较大的类型
byte -> short -> char -> int -> long -> float -> double

强制转换
将较大的类型转换为较小的类型
double -> float -> long -> int -> char -> short -> byte

所占字节数:

  • byte 字节型 (8个bit,也就是1个字节)范围:-128~+127
  • short 短整形(16个bit,也就是2个字节)范围:-32768~+32767
  • int 整形(32个bit,也就是4个字节)最常用的类型:-2147483648 ~ +2147483647
  • long 长整形(64个bit,也就是8个字节)范围:-9223372036854775808 ~ +9223372036854775807
  • float 单精度浮点型 (32bit,4字节)
  • double 双精度浮点型(64bit,8字节)
  • char 字符型(16个bit,也就是2字节,它不带符号)范围是0 ~ 65535

自动类型推断(Java10具有的新特性)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.util.ArrayList;
public class VarDemo {
public static void main(String[] args) {
var intNumber = 20; // 推断为int
var longNumber = 20L; // 推断为long
var floatNumber = 20F; // 推断为float, 20.0
var doubleNumber = 20D; // 推断为double, 20.0

System.out.println(getType(intNumber) + "," + getType(longNumber) + ","+
getType(floatNumber) + ","+ getType(doubleNumber));

var list = new ArrayList<String>();
list.add("one");
list.add("two");
list.forEach(System.out::println);
}

public static String getType(Object o) {
return o.getClass().getName().replace("java.lang.","");
}
}

运算符

Java语言中除了支持加减乘除四则运算以外,还支持位运算,移位运算,自增自减运算等。其中浮点数不支持位运算和移位运算。浮点数无法进行精确的表示,如果需要比较,只能比较两个浮点数之前的绝对值是否小于一个很小的数。

浮点数不同于整数除零会报ArithmeticException。浮点数并不会报异常,会返回几个特殊的值NaN,Infinity,-Infinity

运算符优先级

优先级运算符结合性
1() [] .从左到右
2! +(正) -(负) ~ ++ --从右向左
3* / %从左向右
4+(加) -(减)从左向右
5<< >> >>>从左向右
6< <= > >= instanceof从左向右
7== !=从左向右
8&(按位与)从左向右
9^从左向右
10|从左向右
11&&从左向右
12||从左向右
13?:从右向左
14= += -= *= /= %= &= |= ^= ~= <<= >>= >>>=从右向左

短路运算: 布尔运算中重要的一个特点,如果布尔运算表达式能提前知道结果,则后续计算不再执行,直接返回结果。

三元运算: 根据第一个布尔表达式的结果,来选择执行哪一个表达式

instanceof是Java中的二元运算符,左边是对象,右边是类;当对象是右边类或子类所创建对象时,返回 true;否则,返回 false。

1
2
3
4
public static void main(String[] args) {
Integer num = 1;
System.out.println(num instanceof Integer); // true
}

变量与常量

变量定义: [数据类型] [变量名称];

定义规范:

  • 标识符可以由大小写字母、数字、下划线(_)和美元符号($)组成,但是不能以数字开头。

  • 变量不能重复定义,大小写敏感,比如A和a就是两个不同的变量。

  • 不能有空格、@、#、+、-、/ 等符号。

  • 应该使用有意义的名称,达到见名知意的目的(一般我们采用英文单词),最好以小写字母开头。

  • 不可以是 true 和 false。

  • 不能与Java语言的关键字或是基本数据类型重名,关键字列表如下:

变量可以单独定义也可以使用逗号分隔同时定义多个数据类型相同的变量。变量之间可以进行基本的运算。

常量定义: final [数据类型] [常量名称];

2.流程控制语句

Java语言的流程控制和C语言并无区别,主要划分为选择和循环结构。流程控制语句中,如果不包括{}则只会执行语句之后的一行,包括{}会执行括号里的所有内容。流程控制语句之间是可以相互嵌套。

代码块: Java中代码块指的是用 {} 包围的代码集合,分为4种:普通代码块,静态代码块,同步代码块,构造代码块

作用域: 变量的作用范围只限于所处的代码块之内,超过所对应代码块之外,就无法正常访问变量

选择结构

Java中的选择结构主要有ifelse语句和switch语言来实现。通常情况下,常量的选择采用switch语言来实现,变量的选择采用if语句

ifelse语句示例
1
2
3
4
5
6
7
8
9
10
11
public static void main(String[] args) {
int a = 15;
if(a > 10) { //只有判断成功时,才会执行下面的代码块中内容,否则直接跳过
System.out.println("a大于10");
System.out.println("a的值为:"+a);
} else { //当判断不成功时,会执行else代码块中的代码
System.out.println("a小于10");
System.out.println("a的值为:"+a);
}
System.out.println("我是外层");
}
switch语句示例
1
2
3
4
5
6
7
8
9
10
11
12
13
public static void main(String[] args) {
char c = 'A';
switch (c) {
case 'A':
if(c == 'A') { //嵌套一个if语句
System.out.println("去尖子班!");
}
break;
case 'B':
System.out.println("去平行班!");
break;
}
}

循环语句

Java中循环主要有for循环,while循环,dowhile循环三种。

for循环结构

for (表达式1;表达式2;表达式3) 循环体;

  • for循环中可以把表达式1放在循环体以外

    1
    2
    3
    4
    5
    6
    7
    8
    public static void main(String[] args) {
    int i = 0; //在外面创建变量i,这样全部范围内都可以使用了
    for (; i < 3; i++) { //for循环的三个表达式并不一定需要编写
    System.out.println("准备就绪!!!");
    System.out.println("当前i的值为:"+i);
    }
    System.out.println("当前i的值为:"+i);
    }
  • for循环可以三个表达式都不写

    1
    2
    3
    4
    public static void main(String[] args) {
    for (;;) //如果什么都不写,相当于没有结束条件,这将会导致无限循环
    System.out.println("为你千千万万遍");
    }
  • 循环结构使用break跳出循环体

    1
    2
    3
    4
    5
    for (int i = 0; i < 3; i++) {
    if(i == 1) break; //我们希望当i等于1时提前结束
    System.out.println("为你千千万万遍");
    System.out.println("当前i的值为:"+i);
    }
  • 循环结构使用continue进入下一次循环

    1
    2
    3
    4
    5
    6
    for (int i = 1; i < 4; ++i) {
    for (int j = 1; j < 4; ++j) {
    if(i == j) continue; //当i == j时,进行下一次
    System.out.println(i+", "+j);
    }
    }
while和dowhile循环结构

相比for循环,while循环更多的用在不明确具体的结束时机的情况下来使用。for循环中的break和continue在while循环中同样适用

1
2
3
4
5
6
7
public static void main(String[] args) {
int i = 100; //比如现在我们想看看i不断除以2得到的结果会是什么,但是循环次数我们并不明确
while (i > 0) { //现在唯一知道的是循环条件,只要大于0那么就可以继续除
System.out.println(i);
i /= 2; //每次循环都除以2
}
}

dowhile和while的区别在于,无论循环条件是否满足,都至少执行一次循环体里的内容

1
2
3
4
5
6
7
public static void main(String[] args) {
int i = 0; //比如现在我们想看看i不断除以2得到的结果会是什么,但是循环次数我们并不明确
do { //无论满不满足循环条件,先执行循环体里面的内容
System.out.println("Hello World!");
i++;
} while (i < 10); //再做判断,如果判断成功,开启下一轮循环,否则结束
}

3.输入与输出

Java中使用Sytem类进行输入和输出。输出使用的是out变量来接受输出的数据,他是PrintStream类型的静态常量。输出主要有println、print、以及printlf三种输出方法。

  • print() - 它在引号内打印字符串。

  • println() - 它在引号内打印字符串,类似于print()方法。然后光标移动到下一行的开头。

  • printf() - 提供格式化输出,与C语言语法完全相同

1
2
3
4
5
6
7
8
9
10
11
 public static void main(String[] args) {
System.out.print("A,");
System.out.print("B,");
System.out.print("C.");
System.out.println();

double d = 3.1415926;
System.out.printf("%.2f\n", d); // 显示两位小数3.14
System.out.printf("%.4f\n", d); // 显示4位小数3.1416
System.out.println("END");
}

Java中的输入需要导入“import java.util.Scanner;”,同时Scanner类中需要传入System.in参数,可以输入的数据类型示例如下

输入为字符串

1
2
3
4
5
6
7
8
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); // 创建Scanner对象
System.out.print("Input your name: "); // 打印提示
String name = scanner.nextLine(); // 读取一行输入并获取字符串
System.out.print("Input your age: "); // 打印提示
int age = scanner.nextInt(); // 读取一行输入并获取整数
System.out.printf("Hi, %s, you are %d\n", name, age); // 格式化输出
}

输入为整数

1
2
3
4
5
6
7
8
9
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("输入一个整数: ");
int number = input.nextInt();
System.out.println("您输入 " + number);

//关闭scanner对象
input.close();
}

输入为浮点数

1
2
3
4
5
6
7
8
9
10
11
12
13
 public static void main(String[] args) {
Scanner input = new Scanner(System.in);

//获取float输入
System.out.print("Enter float: ");
float myFloat = input.nextFloat();
System.out.println("Float entered = " + myFloat);

//获取double输入
System.out.print("Enter double: ");
double myDouble = input.nextDouble();
System.out.println("Double entered = " + myDouble);
}

JavaSE第1篇基础语法
https://www.eldpepar.com/coding/52339/
作者
EldPepar
发布于
2022年10月14日
许可协议