1.Java程序基本结构
包括原始数据类型、语句、数组、静态方法、字符串、标准输入/输出、数据抽象。
1.1原始数据类型
整型:字节byte【1字节,范围-1287~127】、短整型short【2字节,范围-215~215-1】、基本整型int【4字节,范围-231~231-1】、长整型long【8字节,范围-263~263-1】。
浮点型:单精度浮点型float【4字节】、双精度浮点型double【8字节】。
字符型:char【2字节,Unicode字符】。
布尔型:boolean【1字节,true/false】。
注:(1)整型:二进制数前缀——0b;八进制——0;十六进制——0x;
长整型:后缀L/l,建议用L;
(2)整型数默认int型。
(3)浮点型常量默认双精度double,浮点数后加F/f表示单精度数,加后缀D/d表示双精度数。单精度8位,双精度16位有效数字。
浮点型常数可用科学计数法表示,如5.67*105可以表示成5.67E+5或5.67E5。(E浅必须有数据,E后必须为整型数)
(4)转义字符表:
转义序列 | 名称 | Unicode |
\b | 退格键 | \u0008 |
\t | Tab键 | \u0009 |
\n | 换行符号 | \u000A |
\f | 进纸 | \u000C |
\r | 回车键 | \u000D |
\\ | 反斜杠 | \u005C |
\’ | 单引号 | \u0027 |
\” | 双引号 | \u0022 |
1.2语句
六种语句——声明、赋值、条件、循环、调用、返回。
1.3数组
多个同种数据类型的值的集合。(后续介绍)
1.4静态方法
封装并重用代码,独立模块。(后续介绍)
1.5字符串
一连串的字符。(后续介绍)
1.6标准输入输出
程序与外界联系的桥梁。(后续介绍)
1 Scanner input=new Scanner(System.in); 2 System.out.println(Data);
1.7数据抽象
数据抽象封装和重用代码,使我们可以定义非原始数据类型,进而支持面向对象编程。(后续介绍)
2.表达式
2.1运算符优先级
运算符*和/(以及%)的优先级高于+和-;逻辑运算符中!最高,之后&&,之后||。
相同优先级运算符从左至右运算。
建议加括号,避免出错。
2.2类型转换
2.2.1自动类型转换/隐式类型转换(自动提升):把一个表述范围小的数值或变量直接赋值给另一个范围大的变量时会发生。
简单类型除boolean外都可以自动提升。整个算术表达式的数据类型自动提升到最高的类型。字符串类型级别最高,例‘a’+“ ”+1输出为 a 1。
1 byte i = 0; 2 int a =i; 3 long b = i; 4 float c =b; 5 double d =c; 6 short j =i;
2.2.2强制类型转换/显示类型转换(造型):把一个表述范围大的数值或变量赋值给另一个范围小的变量时需要强制类型转换。
注:null值可以强制转换为任何java类类型。
1 int i=99; 2 byte b=(byte)i; 3 char c=(char)i; 4 float f=i; 5 double d = f; 6 f =(float) d;
2.2.3包装类
六个包装类:Boolean、Integer、Long、Float、Double、Character(后续介绍)
2.3比较
2.3.1混合类型运算符
相等==;不等!=;小于<;小于等于<=;大于 >;大于等于>=。结果是布尔型,得到布尔型结果的表达式被称为布尔表达式。
3.语句
语句通过创建和操作变量、对变量赋值并控制这些操作的执行流程来描述运算。
3.1声明语句
创建某种类型的变量并用标识符命名。一般在首次使用某变量时声明。变量的作用域即为定义它的地方。
3.2赋值语句
将某种类型的数值赋予一个变量。赋值语句左侧必须为单个变量,右侧可以是能够得到相应类型的值的任意表达式。
3.3条件语句
可以改变执行流程。
if(){
}else(){}
3.4循环语句
更为彻底地改变执行流程。
for(;;){}
while(){}
do{}while()
3.5调用和返回语句
break:立即从循环中退出;continue:立即开始下一轮循环;return:直接返回。
4.运算符
4.1算术运算符
操作符 | 描述 | 例子 |
---|---|---|
+ | 加法 - 相加运算符两侧的值 | A + B 等于 30 |
- | 减法 - 左操作数减去右操作数 | A – B 等于 -10 |
* | 乘法 - 相乘操作符两侧的值 | A * B等于200 |
/ | 除法 - 左操作数除以右操作数 | B / A等于2 |
% | 取余 - 左操作数除以右操作数的余数 | B%A等于0 |
++ | 自增: 操作数的值增加1 | B++ 或 ++B 等于 21(区别详见下文) |
-- | 自减: 操作数的值减少1 | B-- 或 --B 等于 19(区别详见下文) |
注:(1)+运算符会具有把非字符串转换为字符串类型的能力(隐式转换),如”x“+1得到的结果为x1。
(2)/运算符在整数间做运算时会舍弃小数部分。
(3)%运算符对负数取模时可忽略负号,但被模数如果为负,结果就为负。
4.2关系运算符
运算符 | 描述 | 例子 |
---|---|---|
== | 检查如果两个操作数的值是否相等,如果相等则条件为真。 | (A == B)为假。 |
!= | 检查如果两个操作数的值是否相等,如果值不相等则条件为真。 | (A != B) 为真。 |
> | 检查左操作数的值是否大于右操作数的值,如果是那么条件为真。 | (A> B)为假。 |
< | 检查左操作数的值是否小于右操作数的值,如果是那么条件为真。 | (A <B)为真。 |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。 | (A> = B)为假。 |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。 | (A <= B)为真。 |
4.3位运算符、移位运算符
(1)~:取反
(2)&:按位与
(3)|:按位或
(4)^:按位异或
(5)<<:位左移;>>:位右移
位左移运算:将a往左移n位,相当于a*2n。移位运算比乘2运算快。
位右移运算:将a往右移n位,相当于a/2n。移位运算比除2运算快。
4.4三目运算符
格式为x ? y : z
其中x为boolean类型表达式,先计算x的值,如为true,则整个运算的结果为y的值,否则为z的值。
4.5逻辑运算符
&& | 称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。 | (A && B)为假。 |
| | | 称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。 | (A | | B)为真。 |
! | 称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。 | !(A && B)为真。 |
注:
两种逻辑与(&&和&)、两种逻辑或(||和|)的运算规则基本相同。&和|运算把逻辑表达式全部计算,而&&和||运算具有短路计算功能。
对于&来说,如果左侧条件为false,也会计算右侧条件的值,而对于&&来说,如果左侧的条件为false,则不计算右侧的条件,这种现象被称作短路现象。
对于&&运算来说,只要运算符左端的值为false,则因无论运算符右端的值为true或为false,其最终结果都为false。
所以,系统一旦判断出&&运算符左端的值为false,则系统将终止其后的计算过程;
对于 || 运算来说,只要运算符左端的值为true,则因无论运算符右端的值为true或为false,其最终结果都为true。所以,系统一旦判断出|| 运算符左端的值为true,则系统将终止其后的计算过程。
4.6赋值运算符
操作符 | 描述 | 例子 |
---|---|---|
= | 简单的赋值运算符,将右操作数的值赋给左侧操作数 | C = A + B将把A + B得到的值赋给C |
+ = | 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 | C + = A等价于C = C + A |
- = | 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 | C - = A等价于C = C - A |
* = | 乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 | C * = A等价于C = C * A |
/ = | 除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 | C / = A等价于C = C / A |
(%)= | 取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数 | C%= A等价于C = C%A |
<< = | 左移位赋值运算符 | C << = 2等价于C = C << 2 |
>> = | 右移位赋值运算符 | C >> = 2等价于C = C >> 2 |
&= | 按位与赋值运算符 | C&= 2等价于C = C&2 |
^ = | 按位异或赋值操作符 | C ^ = 2等价于C = C ^ 2 |
| = | 按位或赋值操作符 | C | = 2等价于C = C | 2 |
4.7自增(++)自减(--)运算符
是一种特殊的算术运算符,在算术运算符中需要两个操作数来进行运算,而自增自减运算符是一个操作数。
例:int b = ++a; 拆分运算过程为: a=a+1=4; b=a=4, 最后结果为b=4,a=4
int d = --c; 拆分运算过程为: c=c-1=2; d=c=2, 最后结果为d=2,c=2
其他运算符略。
注: 运算符优先级(从低到高):
类别 | 操作符 | 关联性 |
---|---|---|
后缀 | () [] . (点操作符) | 左到右 |
一元 | + + - !〜 | 从右到左 |
乘性 | * /% | 左到右 |
加性 | + - | 左到右 |
移位 | >> >>> << | 左到右 |
关系 | >> = << = | 左到右 |
相等 | == != | 左到右 |
按位与 | & | 左到右 |
按位异或 | ^ | 左到右 |
按位或 | | | 左到右 |
逻辑与 | && | 左到右 |
逻辑或 | | | | 左到右 |
条件 | ?: | 从右到左 |
赋值 | = + = - = * = / =%= >> = << =&= ^ = | = | 从右到左 |
逗号 | , | 左到右 |