【注意】此部分有些知识对于初学者可能看不懂,不要着急,可以跳过看不懂的,后面的篇章会继续讲解
2.1 标识符与关键字
2.1.1 标识符
在Java中,标识符是用来表示变量、方法、类、接口等命名的符号。而关键字是Java语言中预定义的具有特殊含义的保留字,不能用作标识符。
以下是Java标识符的一般规则:
- 标识符可以由字母(A-Z,a-z)、数字(0-9)、下划线(_)和美元符号($)组成。
- 标识符必须以字母、下划线或美元符号开头,不能以数字开头。
- 标识符区分大小写,例如"myVariable"和"myvariable"是不同的标识符。
2.1.2 关键字
关键字是Java语言的一部分,具有特殊的语法和语义,不能用作标识符。因此,在编写Java代码时,需要避免使用关键字作为标识符。
以下是Java的一些关键字(保留字):
- 基本数据类型:boolean、byte、short、int、long、float、double、char
- 控制流程:if、else、switch、case、default、while、do、for、break、continue、return
- 类和对象:class、interface、extends、implements、new、this、super、instanceof、static、final、abstract
- 异常处理:try、catch、finally、throw、throws
- 访问修饰符:public、protected、private
- 其他:void、null、true、false、package、import、synchronized、volatile
2.2 变量
在Java中,变量是用于存储数据的内存位置,可以通过标识符来引用和操作。以下是关于Java变量的一些总结:
2.2.1 变量类型
- 基本数据类型:Java提供了一些基本的数据类型,如整数类型(byte、short、int、long)、浮点数类型(float、double)、字符类型(char)、布尔类型(boolean)等。
- 引用类型:引用类型包括类、接口、数组等,需要使用关键字new来创建对象,然后将对象的引用赋给变量。
2.2.2 变量声明和初始化
- 变量声明:在使用变量之前,需要先声明变量,指定变量的类型和名称。例如:int age;
- 变量初始化:可以在声明变量的同时进行初始化,或者在后续的代码中给变量赋初值。例如:int age = 20; 或者 age = 20;
2.2.3 变量命名规则
- 变量名由字母(A-Z,a-z)、数字(0-9)、下划线(_)和美元符号($)组成。
- 变量名必须以字母、下划线或美元符号开头,不能以数字开头。
- 变量名区分大小写。
- 变量名不能是Java的关键字。
2.2.4 变量作用域[超]
- 局部变量:在方法、构造方法或代码块中声明的变量称为局部变量。局部变量只在其声明的范围内可见,超出范围后将被销毁。
- 成员变量:在类中声明的变量称为成员变量,也称为实例变量。成员变量的作用域是整个类,可以被类中的方法访问。
2.2.5 常量
- 常量是指在程序执行过程中其值不会改变的变量。在Java中,可以使用final关键字来声明常量。例如:final int MAX_VALUE = 100;
需要注意的是,变量在使用之前必须先声明并初始化,否则会导致编译错误。正确地使用变量可以帮助我们存储和操作数据,使程序具备更强的灵活性和可扩展性。
2.3 数据类型
2.3.1 分类
在Java中,数据类型用于定义变量的类型和操作数据的方式。Java提供了两种数据类型:基本数据类型和引用数据类型。
- 基本数据类型(Primitive Data Types):
-
- 整数类型:byte、short、int、long
- 浮点数类型:float、double
- 字符类型:char
- 布尔类型:boolean
- 引用数据类型(Reference Data Types):
-
- 类:用于定义对象的属性和方法。
- 接口:用于定义一组方法的规范。
- 数组:用于存储多个相同类型的元素。
【注意】基本数据类型是此时的重点,后面会有三章内容对应用数据类型讲解
2.3.2 基本数据类型
- 整数类型:
-
- byte:8位有符号整数,取值范围为-128到127。
- short:16位有符号整数,取值范围为-32768到32767。
- int:32位有符号整数,取值范围为-2147483648到2147483647。
- long:64位有符号整数,取值范围为-9223372036854775808到9223372036854775807。
- 浮点数类型:
-
- float:32位单精度浮点数,取值范围为±1.4E-45到±3.4028235E+38,精度为约6-7位小数。
- double:64位双精度浮点数,取值范围为±4.9E-324到±1.7976931348623157E+308,精度为约15位小数。
- 字符类型:
-
- char:16位Unicode字符,用单引号括起来。例如:char ch = 'A';
- 布尔类型:
-
- boolean:表示真或假的值,只有两个取值:true和false。
需要注意的是,基本数据类型在内存中直接存储数据值,而引用数据类型存储的是对象的引用。此外,Java还提供了自动装箱和拆箱的功能,可以在基本数据类型和对应的包装类之间进行转换。
使用适当的数据类型可以提高程序的效率和可读性,并确保正确处理数据。在选择数据类型时,需要根据数据的范围和所需的精度来进行选择。
2.4 运算符
在Java中,运算符用于执行各种操作,例如算术运算、逻辑运算、赋值操作等。以下是一些常见的Java运算符的总结:
2.4.1 算术运算符
-
- +:相加
- -:相减
- *:相乘
- /:相除
- %:取模(取余)
import java.util.Scanner;//导入Scanner包
public class Test2_1{
public static void main(String args[]){
Scanner input=new Scanner(System.in);//创建input对象,用来接受键盘输入
int a,b;
a=input.nextInt();//用a来接受第一个输入数
b=input.nextInt();//用b来接受第二个输入数
System.out.println("a+b = "+(a+b));
System.out.println("a-b = "+(a-b));
System.out.println("a*b = "+(a*b));
System.out.println("a/b = "+(a/b));
System.out.println("a%b = "+(a%b));
}
}
2.4.2 关系运算符
-
- ==:等于
- !=:不等于
- >:大于
- <:小于
- >=:大于等于
- <=:小于等于
import java.util.Scanner;
public class Test2_2{
public static void main(String args[]){
Scanner input=new Scanner(System.in);
int x,y;
x=input.nextInt();
y=input.nextInt();
System.out.println(x>y);
System.out.println(x<y);
System.out.println(x>=y);
System.out.println(x<=y);
System.out.println(x==y);
System.out.println(x!=y);
System.out.println((x>y)&&(x<y));
System.out.println((x>y)||(x<y));
System.out.println(!(x<y));
}
}
2.4.3 逻辑运算符
-
- &&:逻辑与
- ||:逻辑或
- !:逻辑非
op1 | op2 | op1&&op2 | op1||op2 | !op1 |
true | true | true | true | false |
true | false | false | true | false |
false | true | false | true | true |
false | false | false | false | true |
2.4.4 位运算符
-
- &:按位与
- |:按位或
- ^:按位异或
- ~:按位取反
- <<:左移
- >>:有符号右移
- >>>:无符号右移
2.4.5 赋值运算符
-
- =:简单赋值
- +=:加并赋值
- -=:减并赋值
- *=:乘并赋值
- /=:除并赋值
- %=:取模并赋值
- <<=:左移并赋值
- >>=:有符号右移并赋值
- &=:按位与并赋值
- |=:按位或并赋值
- ^=:按位异或并赋值
2.4.6 三元运算符
-
- condition ? expression1 : expression2:如果条件为真,则返回表达式1的值,否则返回表达式2的值。
public class Test2_3{
public static void main(String[] args){
String str=10>5?"so easy":"我不知道,很笨";
System.out.println("10比5大?"+str);
}
}
这只是一些常见的运算符,Java还提供了其他类型的运算符,如条件运算符、类型转换运算符等。运算符的使用可以帮助我们进行各种计算和逻辑操作,提高程序的灵活性和功能性。
2.5 类型转换
在Java中,类型转换是将一个数据类型的值转换为另一个数据类型的过程。Java提供了两种类型转换:自动类型转换(隐式转换)和强制类型转换(显式转换)。
2.5.1 自动类型转换(隐式转换)
- 当把一个数据类型的值赋给另一个数据类型的变量时,如果目标类型的范围大于源类型,则会自动进行类型转换。
- 例如,将一个整数赋值给浮点数类型的变量,将一个字符赋值给整数类型的变量等。
- 自动类型转换是安全的,不会导致数据丢失或精度损失。
public class Test2_4{
public static void main(String args[]){
int y=30;
float x;
x=y;
System.out.println(x);
}
}
2.5.2 强制类型转换(显式转换)
- 当需要将一个数据类型的值转换为另一个数据类型的值,但目标类型的范围小于源类型时,需要使用强制类型转换。
- 强制类型转换需要使用括号将目标类型括起来,并放在需要转换的值之前。
- 强制类型转换可能会导致数据丢失或精度损失,需要谨慎使用。
public class Test2_5{
public static void main(String args[]){
int n=100;
float m=1.389f;
System.out.println("转换前");
System.out.println("n= "+n);
System.out.println("m= "+m);
n=(byte)n;
m=(int)m;
System.out.println("转换后");
System.out.println("n= "+n);
System.out.println("m= "+m);
}
}
2.5.3 事例
// 自动类型转换(隐式转换)
int num1 = 100;
double num2 = num1; // int自动转换为double
// 强制类型转换(显式转换)
double num3 = 3.14;
int num4 = (int) num3; // double强制转换为int,会丢失小数部分
// 字符串转换为数值类型
String str = "123";
int num5 = Integer.parseInt(str); // 将字符串转换为int类型
// 数值类型转换为字符串
int num6 = 456;
String str2 = String.valueOf(num6); // 将int类型转换为字符串
2.5.4 注意
- 在进行强制类型转换时,可能会发生数据溢出或精度损失的问题,需要确保转换的安全性。
- 在字符串和数值类型之间进行转换时,可以使用相关的包装类或工具方法来实现。
类型转换在Java中非常常见,可以帮助我们处理不同类型的数据,并进行合适的计算和操作。