代码注释
Java中提供3种代码注释,分别为单行注释,多行注释,和文档注释,如下图所示:
标识符和关键字
标识符
标识符可以简单地理解为一个名字,用来标识类名、变量名、方法名以及数组名等。
Java规定标识符由任意顺序的字母、数字、下划线(_)和美元符号($)组成。
注意:
- 标识符第一个字符不能是数字
- 标识符不能是Java中保留关键字
- Java中标识符字母严格区分大小写
- Java中标识符不仅包括a、b、c等,还包含汉字、日文以及其他语言的文字(合法,但不推荐)
关键字
关键字是Java中已经被赋予特定意义的一些单词,简单地理解,凡是在eclipse里中变成紫色粗体的单词都是关键字。
变量和常量
变量
变量是可以改变值的量,可以被多次赋值,声明变量就是要告诉编译器该变量是属于哪一种数据类型。
声明变量并赋值:
int x=30;
int y;
y=1;
y=20;
Java中允许使用汉字汉其他语言作为变量名,在在运行程序时也不会出现错误,但是并不推荐使用。
变量的命名规则:
常量
常量是在程序运行过程中一直不会改变的量,在整个程序中只能被赋值一次,而声明一个常量除了要指定数据类型以外,还需要通过final关键字进行限定。
声明常量并赋值:
final double PI=3.1415926;
final boolean BOOL=true;
数据类型
整数类型
整数类型用来存储整数数值,即没有小数部分的数值。整型数据根据它在内存中所占大小的不同,可以分为以下四种类型,它们具有不同的取值范围
注意:
在给变量赋值时,要注意取值范围,超出相应的范围就会报错
int是Java默认的整数类型以int为例,声明int型变量:
int x;
int x,y;
int x=5,y=10;
int x=(5+1)
long型的取值范围比int大,且属于高级的数据类型,所以在赋值的时候要和int型做出区分,需要在整数后面加上L或l(小写的L)
long x=1234567l
long y=3456789L
浮点类型
浮点类型表示有小数部分的数字,可以分为单精度(float)和双精度(double)浮点类型,它们具有不同的取值范围。
默认情况下小数都被看成double型,若想使用float型声明小数,则需要在后面加上F或f。另外,可以使用后缀D或d声明double类型数据,但是这不是一个硬性条件,即加不加都可以,而声明float类型数据时如果不加F或f,系统就会认为是double类型而报错。
声明变量:
float a=3.27f
double b1=23.45d
double b2=23.45
字符类型
char型
字符类型(char)用于存储单个字符,占用2个字节的内存空间,在声明字符型变量时,要以单引号表示,如’s’就表示一个字符。
声明字符型变量:
char ch='a';
由于a在Unicode表中的排序是97,因此允许上面的语句写成:
char ch=97;
char的默认值是空格,char可以与整数做运算。
转义字符
转义字符是一种特殊的字符变量,以""开头,后跟一个或多个字符。
注意:
将转义字符赋值给字符变量时,与字符常量值一样需要使用单引号
布尔类型
布尔类型又称逻辑类型,只有true和false两个值。布尔值不能和整数类型进行转换,布尔值在内存中占用1个字节.
实例代码如下:
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in); // 创建扫描器,获取控制台输入的值
System.out.println("请输入六位数字密码:");
int password=sc.nextInt(); // 将用户在控制台输入的数字赋给整型变量
boolean result=(password==998567);
System.out.println("用户密码是否正确:"+result);
sc.close(); // 关闭扫描器
}
}
数据类型转换
隐式转换
显式转换
语法如下:
(类型名)要转换的值
运算符
赋值运算符
赋值运算符用“=”表示,它是一个二元运算符(对两个操作数进行处理),其功能是将右边操作数的值赋给左边的操作数;
例如:
int a=100 // 将100赋给变量a
注意:
- 左边的操作数必须是变量,不能是常量或表达式
- 右边的操作数常量、变量和表达式
- 不要将赋值运算符与相等运算符“==”混淆
- 左右两边内容的类型必须匹配,如果类型不匹配则需要自动转化为对应的类型
- Java中可以把赋值运算符连在一起使用,例如:x=y=z=5,但不推荐这样做
算术运算符
Java中的算术运算符主要有+(加)、-(减)、*(乘)、/(除)、%(取余),这些都是二元运算符。
注意:
- +、- 运算符还可以作为数据的正负符号
- 在进行除法和取余运算时,0不能作除数,例如,“int a=5/0”,系统会报出“ArithmeticException”异常。
使用算术运算符模拟计算器功能:
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
System.out.println("请输入两个数字,并用空格隔开(num1 num2):");
double num1=sc.nextDouble();
double num2=sc.nextDouble();
System.out.println("num1+num2的值为:"+(num1+num2));
System.out.println("num1-num2的值为:"+(num1-num2));
System.out.println("num1*num2的值为:"+(num1*num2));
System.out.println("num1/num2的值为:"+(num1/num2));
System.out.println("num1%num2的值为:"+(num1%num2));
}
}
运行结果如下:
自增和自减运算符
自增和自减运算符是单目运算符,可以放在变量之前也可以放在变量之后。
关系运算符
关系运算符属于二元运算符,用来判断一个操作数与另外一个操作数的关系,其运算结果都是布尔型的。
逻辑运算符
逻辑运算符包括逻辑与(&&)、逻辑或(||)和逻辑非(!),其运算结果的值必须为布尔型,在逻辑运算符中,只有(!)是一元运算符,(&&)和(||)都是二元运算符。
示例代码如下:
public class Demo {
public static void main(String[] args) {
int a=1;
int b=2;
boolean result1=((a>b)&&(a!=b));
boolean result2=((a>b)||(a!=b));
System.out.println(result1);
System.out.println(result2);
}
}
运行结果如下:
位运算符
位运算符的操作数是整型,可以是有符号也可以是无符号,可分为两类:位逻辑运算符和
位逻辑运算符
注意:
- 异或^——同则为0,异则为1
- 位逻辑运算符计算布尔值上表同理,只是0假1真
位移运算符
位移运算符有三个,分别是左移(<<)、右移(>>)和无符号右移(>>>),这三种运算符都可以将任意数字以二进制的方式进行数位移动运算,其中左移和右移不会改变数值的正负,但经过无符号右移运算后,只会产生正数结果。
注意:
- 运算之前需要将数值转换成二进制
- 左移运算符用“<<”表示,是将运算符左边的对象,向左移动运算符右边指定的位数,并且在低位补零。其实,向左移n 位,就相当于乘上2 的n 次方
- 带符号右移运算符用“>>”表示,是将运算符左边的运算对象,向右移动运算符右边指定的位数。如果是正数,在高位补零,如果是负数,则在高位补1
- 右移运算符无符号用“>>>”表示,是将运算符左边的对象向右移动运算符右边指定的位数,并且在高位补0,其实右移n 位,就相当于除以2 的n 次方
示例代码如下:
public class Demo {
public static void main(String[] args) {
int password=123456; //原密码
int key=4; //加密参数
System.out.println("原始密码为:"+password);
password=password<<key;
System.out.println("经过左移运算加密后的结果"+password);
password=password>>key;
System.out.println("经过右移运算还原后的结果"+password);
}
}
运行结果如下:
复合赋值运算符
所谓复合赋值运算符就是将赋值运算符与其他运算符合并成一个运算符使用,而且赋值运算符的两个运算符之间没有空格。
三元运算符
三元运算符的使用格式:
条件表达式?值1:值2
其运算规则为:若条件表达式的值为真,则整个表达式的值取“值1”,否则取“值2”。
圆括号
圆括号可以提升公式中计算过程中的优先级。
运算符优先级