1、注释:
java代码注释分3种:
单行注释://注释信息
多行注释: /*注释信息*/
文档注释:/**注释信息*/
public class TestComments {// 这是单行注释,用于注释单行代码或解释代码功能/* 这是多行注释,用于注释多行代码或详细说明代码功能这里可以包含多行文字*//*** 这是文档注释,用于生成文档,包括类、方法、参数和返回值的描述*/public static void main(String[] args) {// 单行注释示例int x = 5; // 定义并初始化变量x为5/* 多行注释示例定义并初始化变量y为10*/int y = 10;// 输出变量x和y的值System.out.println("x = " + x);System.out.println("y = " + y);}
}
2、关键字:
Java关键字是预先定义的有特别意义的单词,它们对Java的编译器有特殊的意义,用于表示数据类型、程序结构等。Java一共有53个关键字,包括48个关键字和2个保留字(未来可能用作关键字),以及3个特殊直接量。
以下是Java中的关键字及其简要说明:
关键字 说明
abstract 表明类或者成员方法具有抽象属性
assert 断言,用来进行程序调试
boolean 基本数据类型之一,声明布尔类型的关键字
break 提前跳出一个块
byte 基本数据类型之一,字节类型
case 用在switch语句之中,表示其中的一个分支
catch 用在异常处理中,用来捕捉异常
char 基本数据类型之一,字符类型
class 声明一个类
continue 回到一个块的开始处
default 默认,例如用在switch语句中,表明一个默认的分支
do 用在do-while循环结构中
double 基本数据类型之一,双精度浮点数类型
else 用在条件语句中,表明当条件不成立时的分支
enum 枚举
extends 表明一个类型是另一个类型的子类型
final 表示不可变,最终的
finally 用于处理异常情况,用来声明一个基本肯定会被执行到的语句块
float 基本数据类型之一,单精度浮点数类型
for 一种循环结构的引导词
if 条件语句的引导词
implements 表明一个类实现了给定的接口
import 表明要访问指定的类或包
int 基本数据类型之一,整数类型
interface 接口
instanceof 用来测试一个对象是否是指定类型的实例对象
long 基本数据类型之一,长整数类型
native 用来声明一个方法是由与计算机相关的语言(如C/C++语言)实现的
new 用来创建新实例对象
package 包
private 私用模式,访问控制修饰符
protected 保护模式,访问控制修饰符
public 公用模式,访问控制修饰符
return 从成员方法中返回数据
short 基本数据类型之一,短整数类型
static 表明具有静态属性
strictfp 用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范
super 表明当前对象的父类型的引用或者父类型的构造方法
switch 分支语句结构的引导词
synchronized 表明一段代码需要同步执行
this 指向当前实例对象的引用
throw 抛出一个异常对象
throws 声明在当前定义的成员方法中所有需要抛出的异常
transient 声明不用序列化的成员域
try 尝试一个可能抛出异常的程序块
void 声明当前成员方法没有返回值
volatile 表明两个或者多个变量必须同步地发生变化
while 用在循环结构中2个保留字
Java中有两个保留字,它们目前不是关键字,但未来可能用作关键字:const:保留关键字,没有具体含义,是一个类型修饰符,使用const声明的对象不能更新。
goto:保留关键字,没有具体含义,指定跳转到标签。
3个特殊直接量
虽然它们不是关键字,但在Java中有特殊含义:true:布尔类型的真值
false:布尔类型的假值
null:空值
3、数据类型:
Java数据类型主要分为两大类:基本数据类型和引用数据类型。
一、基本数据类型
基本数据类型是Java中不可变的值类型,它们直接包含数据值,并且存储在栈内存中。Java共有八种基本数据类型,具体可以分为以下三类:
数值类型:
byte:字节型,占用1个字节(8位),取值范围为-128到127。
short:短整型,占用2个字节(16位),取值范围为-32768到32767。
int:整型,占用4个字节(32位),取值范围为-2147483648到2147483647。这是最常用的整数类型。
long:长整型,占用8个字节(64位),取值范围为-9223372036854775808到9223372036854775807。当数值很大或很小,超出一个int的范围时,可以使用long。
float:单精度浮点型,占用4个字节(32位),用于存储带小数点的数字。
double:双精度浮点型,占用8个字节(64位),用于存储带有小数点的数字。这是最常用的浮点数类型。
字符类型:
char:字符型,占用2个字节(16位),用于存储单个字符。在Java中,char类型的字面量必须使用半角的单引号括起来。
布尔类型:
boolean:布尔型,占用1个字节,只有两个值:true和false。用于判断真或假。
二、引用数据类型
引用数据类型不是直接包含数据值,而是存储了对象的引用(即对象的内存地址)。Java中的引用类型主要有三种:
类(Class):类是一种用户定义的数据类型,它可以包含属性(变量)和方法。类可以用来创建对象的实例,并存储有关该对象的信息。
接口(Interface):接口是一种特殊的类,它定义了一组方法但没有实现这些方法。接口可以用来定义一组相关的方法和常量,并可以在其他类中实现这些方法。
数组(Array):数组是一种特殊的数据结构,可以存储多个相同类型的元素。数组可以是基本数据类型或引用数据类型的数组。
三、其他数据类型
Java中还有一些特殊的数据类型,如字符串(String)。字符串是由字符组成的序列,用于存储和操作文本数据。字符串在Java中是不可变的,即一旦创建了一个字符串对象,就不能修改它的内容。
4、数据类型转换:
自动数据类型转换:
package test.com;
public class AutoTypeConversionDemo { public static void main(String[] args) { //当一个byte、short或char类型的值赋给一个更大范围的整型(如int、long)变量时,会发生自动类型转换.// 声明一个byte类型的变量 byte b = 100; // 自动数据类型转换:byte到short,short到int,int到long,long到float,float到double // 注意:byte -> int的转换是自动的,尽管这里直接将其赋值给了一个short类型的变量 // 但实际上,byte首先被提升为int,然后再被赋值给short(因为short类型的变量可以接受int类型的值,只要这个值在short的范围内) // 这里直接演示byte到int的自动转换,并通过显式转换到short以避免编译器警告 short s = (short) b; // 显式转换,直接赋值给short通常不需要(但会有警告) // byte到int的自动转换 int i = b; // int到long的自动转换 long l = i; // long到float的自动转换(注意:这可能会导致精度丢失) float f = l; // float到double的自动转换 double d = f; // 打印结果,以验证转换 System.out.println("byte to int: " + i); System.out.println("int to long: " + l); System.out.println("long to float: " + f); System.out.println("float to double: " + d); // 演示char到int的自动转换(因为char在内部是以Unicode值存储的,即一个整数) char c = 'A'; int charAsInt = c; System.out.println("char to int (Unicode value): " + charAsInt); // 输出65,因为'A'的Unicode值是65 }
}
强制数据类型转换:
package test.com;
public class ExplicitTypeConversionDemo { //强制数据类型转换(也称为显式类型转换)是当尝试将一个大范围数据类型的值赋给一个小范围数据类型的变量时,需要明确告诉编译器我们想要进行这种转换的方式。//这种转换可能会导致数据丢失或溢出,因为小范围的数据类型可能无法容纳大范围数据类型中的所有值。public static void main(String[] args) { // 声明一个double类型的变量 double doubleValue = 123.456; // 尝试将double类型的值赋给int类型的变量,这会导致编译错误 // int intValue = doubleValue; // 编译错误 // 使用强制类型转换将double类型的值赋给int类型的变量 // 注意:这会丢失小数部分,只保留整数部分 int intValue = (int) doubleValue; // 打印结果,以验证转换 System.out.println("After casting double to int: " + intValue); // 输出:After casting double to int: 123 // 另一个示例:将float类型的值强制转换为byte类型 // 注意:这可能会导致溢出,因为byte的范围是-128到127 float floatValue = 255.0f; // float类型,f或F后缀表示这是一个float字面量 byte byteValue = (byte) floatValue; // 强制转换 // 打印结果,注意可能的溢出 System.out.println("After casting float to byte: " + byteValue); // 输出可能是-1,因为255超出了byte的范围 }
}
5、常量:
a、字符串常量
字符串常量直接在代码中使用
String greeting = "Hello, World";通过变量存储字符串常量的值
String message1 = "Welcome";
String message2 = "to Java";
String fullMessage = message1 + " " + message2; // fullMessage 的值为 "Welcome to Java"
b、整数常量
整数常量默认为int类型,如果希望表示长整型常量,需要在数字后加上L或l来表示。例如:int number1 = 100; // 十进制整数常量
int number2 = 012; // 八进制整数常量,表示十进制10
int number3 = 0xFF; // 十六进制整数常量,表示十进制255long bigNumber = 123456789012345L; // 长整型常量整数常量在编程中经常用于表示具体的数值,例如计数器、索引等,可以直接在代码中使用整数常量来表示固定的整数值。
c、小数常量
小数常量默认为double类型,如果希望表示单精度浮点型常量,需要在数字后加上f或F来表示。例如:double pi = 3.14159; // 双精度浮点型常量
float height = 1.72f; // 单精度浮点型常量小数常量在编程中经常用于表示需要精确的小数值,如计算圆周率、表示身高等,可以直接在代码中使用小数常量来表示固定的小数值。
d、字符常量
字符常量是在程序中直接表示一个字符的固定值。在 Java 中,字符常量使用单引号 ' ' 包围。例如,'A'、'b'、'7' 等都是字符常量。字符常量可以是一个普通的可打印字符(如字母、数字、标点符号)或者是一些特殊的控制字符(如换行符、制表符等)。特殊的字符在字符常量中使用转义字符来表示,如 '\n' 表示换行符,'\t' 表示制表符。字符常量是基于 Unicode 编码的,每个字符常量实际上代表一个 Unicode 字符。下面是一些字符常量的示例:char letter = 'A'; // 表示字母'A'
char number = '5'; // 表示数字'5'
char space = ' '; // 表示空格字符
char newline = '\n'; // 表示换行符
char tab = '\t'; // 表示制表符字符常量在编程中经常用于表示单个字符,比如在处理字符串、输入输出操作等场景下。在Java中,可以直接在代码中使用字符常量来表示一个特定的字符。
e、布尔常量
布尔常量的类型是 boolean,只有两个取值:true(真)和false(假),布尔常量用来表示逻辑状态或条件的真假。布尔常量主要用于控制流程、判断条件以及逻辑运算。布尔常量的示例:boolean isTrue = true;
boolean isFalse = false;布尔常量在编程中经常用于条件判断语句(如 if 语句、while 循环等)以及逻辑运算(如与、或、非等),帮助程序根据不同的条件来执行不同的代码段。
f、 null
空常量指的是一个特殊的常量值,表示没有指向任何对象的引用,空常量对应的是 null 值。
null 也是一个关键字,用于表示一个变量没有引用任何对象。当一个对象被赋予 null 值时,表示这个对象不指向任何内存位置,即为空。null通常用于初始化变量,表示该变量目前没有指向任何实际的对象。在对应使用这个变量时,需要注意判断是否为空,以避免空指针异常。
例如:
String str = null;
str 变量被初始化为 null,表示没有指向任何字符串对象。当尝试访问 str 变量所引用的对象时,需要先进行空指针检查,以确保不会出现空指针异常。
6、变量
变量的声明:
package test.com;
public class VariableDemo { public static void main(String[] args) { // 声明整型变量 int number = 10; // 声明浮点型变量 double pi = 3.14; // 声明字符型变量 char letter = 'A'; // 声明布尔型变量 boolean isTrue = true; // 声明并初始化字符串变量 //字符串不是基本数据类型,而是String类的对象。String greeting = "Hello, World!"; // 打印变量值 System.out.println("Number: " + number); System.out.println("PI: " + pi); System.out.println("Letter: " + letter); System.out.println("Is True: " + isTrue); // 打印字符串 System.out.println(greeting); }
}
变量的作用域:
package test.com;
//变量的作用域是指变量在程序中可以被访问的区域。
//在Java中,变量的作用域取决于声明它的位置。
//局部变量:在方法、构造函数或代码块中声明的变量。它们的作用域是从声明点开始到包含它的代码块结束。
//实例变量(也称为字段):在类的方法外部但在类内部声明的变量。它们的作用域是整个类,但只能被该类的实例访问。
//类变量(也称为静态变量):使用static关键字声明的变量。它们的作用域是整个类,但可以通过类名直接访问,而不需要创建类的实例。
public class ScopeDemo { // 类变量 static int classVar = 100; public static void main(String[] args) { // 方法变量 int methodVar = 200; // 局部变量 { int blockVar = 300; System.out.println("Block Variable: " + blockVar); // blockVar 只能在当前块中访问 } // 类变量和方法变量都可以在这里访问 System.out.println("Class Variable: " + classVar); System.out.println("Method Variable: " + methodVar); // blockVar 在这里不能访问,因为它只在定义它的块中可见 }
}
7、标识符
标识符是用来给变量、方法、类、接口等命名的字符串。
标识符的命名规则遵循以下基本原则:
首字符:标识符的首字符可以是字母(A-Z 或 a-z)、美元符号($)或下划线(_)。注意,首字符不能是数字(0-9)。
后续字符:除了首字符外的后续字符可以是字母、数字、美元符号($)或下划线(_)。
关键字:Java中的关键字(如class、int、return等)不能用作标识符。
大小写敏感:Java是大小写敏感的语言,因此MyClass和myclass会被视为两个不同的标识符。
长度:理论上,标识符的长度没有限制,但出于可读性和实用性的考虑,应避免使用过长的标识符。
命名约定:虽然Java没有强制的命名约定,但遵循一定的命名习惯(如驼峰命名法)可以使代码更易于阅读和维护。例如,变量名和方法名通常以小写字母开头,随后的单词首字母大写(小驼峰命名法),而类名则以大写字母开头,随后的单词首字母也大写(大驼峰命名法)。
Unicode字符:从Java 1.0.2版本开始,Java标识符可以使用Unicode字符集中的字符,但不建议使用非ASCII字符,因为它们可能会降低代码的可读性。
特殊字符:虽然$和_可以在标识符中使用,但它们通常被保留给特定的命名习惯或库/框架中的特定用途(例如,内部类或变量命名)。
以下是一些有效的Java标识符示例:
age
userName
_myVariable
$salary
EmployeeID
而以下是一些无效的Java标识符示例:
1stClass(以数字开头)
class(关键字)
my-variable(包含非法字符-)
Hello World(包含空格)
选择清晰、描述性强且遵循Java命名约定的标识符,可以使代码更加易于理解和维护。
常用的命名规则: