前言
标识符
可以简单的理解为一个名字。
在Java中,我们需要标识代码的很多元素,包括类名、方法、字段、变量、包名等。我们选择的名称就称为标识符,并且遵循以下规则:
- 标识符可以由字母、数字、下划线(_)、美元符($)组成,但不能包含 @、%、空格等其它特殊字符
- 不能以数字开头
- 标识符是严格区分大小写的
- 标识符的命名最好能反映出其作用,做到见名知意
关键字
在java语言中已经被赋予特定意义的一些单词。一共有53个关键字。
其中有两个保留字:const和goto。
关键字不能被用作标识符!!
注释
Java代码的解释说明。不影响程序的运行,用于辅助读程。
//单行注释
/* 多行注释 */
/** 文档注释 */
变量
在JAVA中,有的数据值是不固定的,总在变,我们还需要记录这些值,我们可以把这些值理解为变量。
我们通过三个元素来描述变量:变量类型,变量名以及变量值。
int age=18; //声明int类型的变量并赋值
String tel; //声明String类型的变量
注意:
- 变量名必须是一个有效的标识符
- 变量名不可以使用java关键字
- 变量名不能重复
常量
在程序运行过程中一致不会改变的量成为常量
基本类型(八种)
介绍
|
类型名称
|
字节空间
|
范围
|
整数型
|
byte
|
1
|
-27到27-1 或者 -128到127
|
short
|
2
|
-215到215-1
|
int
|
4
|
-231到231-1
|
long
|
8
|
-263到263-1
|
浮点型
|
float
|
4
|
单精度,对小数部分的精度要求不高
|
double
|
8
|
双精度,精确的小数部分并操作值很大时
|
字符
|
char
|
2
|
0到65535
|
布尔
|
boolean
|
1
|
真true 假false
|
示例
输出结果
类型的字面值(5条)
整数字面值是int类型
int a = 999999999999999; //超出了int的取值范围
byte,short,char三种比int小的整数可以用范围内的值直接赋值
byte b = 127;//可以的,因为127在byte的取值范围内
byte b2 = 128; //错误,因为128的字面值是int类型,是4字节,byte是1字节,放不开
浮点数的字面值是double类型
double b = 1.5;
字面值后缀LFD
long a = 999999999999L;// 999999999999字面值是int类型,但是超出int取值范围就报错了,只能扩大数据范围,加后缀L,从int转成long
float b = 3.0F;//3.0字面值是double类型,加后缀L,从double转成float
double d = 3D;//3字面值是int类型,加后缀D,从int转成double
进制前缀
0b -2进制 如: 0b0010
0 -8进制 如:076
0x -16进制 如: 0x0986
\u -char类型,16进制 如: \u0000
基本类型的类型转换
小到大/隐式转换
大到小/显式转换
需要强制类型转换
package cn.tedu.basic;
public class Test {
public static void main(String[] args) {
//小转大--隐式转换
short a = 10;
//小转大,右侧的a是小类型,左侧b是大类型,详单与拿着小类型给大类型,可以直接赋值
long b = a;
//大转小--显式转换--强制转换--(小类型)
double m = 10.8;
//右侧m是大类型,左侧n是小类型,拿着大类型直接给小类型赋值--不行
int n = (int)m;
}
}
浮点数转成整数→小数直接舍弃
不管0.1还是0.9全都舍弃。
运算规则(5条)
计算结果的数据类型,与最大类型一致
System.out.println(3/2);//1
byte,short,char三种比int小的整数,运算时会先自动转换成int
byte a = 1;
byte b = 2;
//byte c = a+b;
//错误,因为a+b运算时自动变成int类型,大类型,给小类型byte类型赋值,---不能直接赋值--强转
byte c = (byte)(a+b);
整数运算溢出
整数运算,类似于一个钟表,转到最大时,再转会回到最小。
计算:光速运行一年的长度是多少米。3亿m/s
System.out.println(300000000L*60*60*24*365);
//整数运算溢出解决方案:超出int范围的整数运算会溢出,可以扩大数据范围,加L,变成long类型
浮点数运算不精确
System.out.println(1-0.8);
//0.19999999999999996
浮点数的特殊值
Infinity 无穷大 3.14/0
NaN not a number 0/0.0
运算符
概述
算术运算符
|
+ - * /
|
基本运算
|
%
|
模 / 取余数 10%3结果是1 5%2结果是1 n%2==0
|
++ --
|
自增 自减
|
比较运算符
结果是boolean类型
|
==
|
相等比较 1==1 结果是true
|
!=
|
不等比较 1!=1结果是false
|
逻辑运算符
结果是boolean类型
|
&& &
|
逻辑与(短路与),两边同为真结果才为真
|
|| |
|
逻辑或(短路或),两边只要有一个真结果就是真
|
+
|
字符串连接
|
!
|
非,非真是假,非假是真
|
三元运算符
|
? :
|
三项运算
1 ? 2 : 3
1是真取2,1是假取3
|
赋值运算符
|
=
|
赋值运算
|
+= -=
*= /=
|
复合的赋值运算
a=a*21 ; // a *= 21;
|
& -- 是并且的关系(单与)
1 & 2 想要得到最终结果是true,对于1和2的要求是:必须都得是true
&& -- 是并且的关系(双与/短路与)
1&& 2 ,高效,当1结果是false时,2会被短路
| -- 是或者的关系
1 | 2 想要得到最终结果是true,对于1和2的要求是:1或者2有一个是true就可以
|| -- 是或者的关系(双或/短路或)
1 || 2 ,高效,当1的结果是true时,2会短路
案例