Java SE 基础(二)

一些基本的Java语法。

关键字和保留字

关键字

Keyword

定义:被JAVA语言赋予了特殊的含义,用做专门用途的字符串(单词)

特点:关键字总所有字母都小写

保留字

reserved word

定义:现有JAVA版本尚未使用,但以后版本可能会作为关键字使用。自己命名标识符时要避免使用这些保留字。

gotoconst

标识符

identifier

定义:各种变量、方法、类等要素命名时使用的字符序列称为标识符

规则

  1. 由26个英文字母大小写,0-9,_或$组成
  2. 数字不可以开头
  3. 不可以使用关键字和保留字,但能包含关键字和保留字
  4. 严格区别大小写,长度无限制
  5. 不能包含空格

命名规范

  1. 包名:多单词组成时所有字母都小写:xxxxyyyyzzzz
  2. 类名、接口名:多单词组成时,所有单词的首字母大写:XxxxYyyyZzzz
  3. 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxxYyyyZzzzz
  4. 常量名:所有字母都大写。多个单词时每个单词用下划线连接:XXX_YYY_ZZZ

变量

概念

  1. 内存中的一个存储区域
  2. 该区域的数据可以在同一类型范围内不断变化
  3. 变量是程序中最基本的存储单位。包含变量类型、变量名和存储的值

作用

用于在内存中保存数据

注意

  1. 先声明,后使用
  2. 使用变量名来访问这块区域的数据
  3. 作用域:其定义所在的一对{}内
  4. 变量只有在其作用域内才有效
  5. 同一作用域内,不能定义重名的变量

格式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//数据类型 变量名 = 变量值;

class VariableTest {
public static void main(String[] args){
//变量的定义
int myAge = 12;
//变量的使用
System.out.println(myAge);

//变量的声明
int myNumber;
//变量的赋值
myNumber = 1001;
System.out.println(myNumber);
}
}

变量

按数据类型分类

基本数据类型

整型:byte short int long

浮点型:float double

字符型:char

布尔型:boolean

引用数据类型

类(class)

接口(interface)

数组(array)

整型变量

类型 占用存储空间 表数范围
byte 1字节 = 8bit位 -128 ~ 127
short 2字节 $-2^{15} \sim 2^{15} - 1$
int 4字节 $-2^{31} \sim 2^{31} - 1$
long 8字节 $-2^{63} \sim 2^{63} - 1$

long型变量必须以 L 或 l 结尾

浮点型变量

类型 占用存储空间 表数范围
float 4字节 -3.403E38 ~ 3.403E38
double 8字节 -1.798E308 ~ 1.798E308

float 尾数可以精确到7位有效数字

float型变量结尾以 F 或 f 结尾

字符型变量

char 1字符=2字节

1
2
3
4
5
6
7
8
9
10
class VariableTest {
public static void main(String[] args){
//定义char型变量,通常使用一对'',内部只能写一个字符
char c1 = 'a';
System.out.println(c1);

char c2 = '\u0123';
System.out.println(c2);
}
}

布尔型变量

boolean: 只有两个值:true、false

1
2
3
4
5
6
class VariableTest {
public static void main(String[] args){
boolean b1 = true;
System.out.println(b1);
}
}

基本数据类型之间的运算规则

自动类型提升

byte 、char、 short –> int –> long –> float –> double

容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型。

当byte、char、short三种类型变量做运算时,结果为int类型(包括同种类型变量做运算)

1
2
3
4
5
6
7
8
9
10
11
12
13
class VariableTest1{
public static void main(String[] args){
byte b1 = 2;
int i1 = 129;
//编译不通过
//byte b2 = b1 + i1;
int i2 = b1 + i1;
System.out.println(i2);

float f = b1 + i1;
System.out.println(f);
}
}

强制类型转换

自动类型提升运算的逆运算

  1. 需要使用强转符:()
  2. 可能导致精度损失
1
2
3
4
5
6
7
class VariableTest2{
public static void main(String[] args){
double d1 = 12.9;
int i1 = (int)d1; //截断操作
System.out.println(i1); //输出12
}
}

变量运算规则的两个特殊情况

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class VariableTest3{
public static void main(String[] args){

//情况1
long l = 123213;
System.out.println(l);
//编译失败:过大的整数
//long l1 = 2131231232331233;
long l1 = 2131231232331233L;

//编译失败
//float f1 = 12.3;

//情况2
//整型常量,默认类型为int
//浮点型常量,默认类型为double
byte b = 12;
//byte b1 = 12 + 1; //编译失败
//float f1 = b + 12.3; //编译失败
}
}

String类型变量的使用

  1. String属于引用数据类型
  2. 声明String类型变量时,使用一对””
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class StringTest{
public static void main(String[] args){
String s1 = "Hello World";
System.out.println(s1);

String s2 = "a";
String s3 = "";
//char c = ''; //编译不通过

int number = 1001;
String numberStr = "学号:";
String info = numberStr + number;
boolean b1 = true;
String info1 = info + b1;
System.out.println(info1);
}
}

练习1

1
2
3
4
5
6
7
8
9
10
11
12
class StringTest{
public static void main(String[] args){
char c = 'a';
int num = 10;
String str = "hello";
System.out.println(c + num + str); //107hello
System.out.println(c + str + num); //ahello10
System.out.println(c + (num + str)); //a10hello
System.out.println((c + num) + str); //107hello
System.out.println(str + num + c); //hello10a
}
}

练习2

1
2
3
4
5
6
7
8
9
class StringTest{
public static void main(String[] args){
System.out.println("* *"); //* *
System.out.println('*' + '\t' + '*'); //93
System.out.println('*' + "\t" + '*'); //* *
System.out.println('*' + '\t' + "*"); //51*
System.out.println('*' + ('\t' + "*")); //* *
}
}

String转int

1
2
3
4
5
6
7
class StringTest{
public static void main(String[] args){
String str1 = 123 + "";
int num1 = Integer.parseInt(str1);
System.out.println(num1);
}
}

进制

整数

二进制:0,1,满2进1,以0b或0B开头

十进制:0~9,满10进1

八进制:0~7,满8进1,以数字0开头

十六进制:0~9及A~F,满16进1,以0x或0X开头表示,此处的A~F不区分大小写

如:0x21AF + 1 = 0X21B0

原反补码

正数原反补相同

负数反码符号位不变,其他位按位取反,补码为反码+1

进制转换

十进制 –> 二进制 :除2取余的逆


Java SE 基础(二)
https://www.jingshan256.com/java_se_2/
作者
景杉256
发布于
2022年3月20日
许可协议