Java语言特点
- 平台无关性 :软件的运行不会因为操作系统、处理器的变化而导致程序无法运行或出现运行错误。
- 面向对象
- 简单性 :java语言中略去了运算符重载,多重继承等概念,简化了程序设计者的内存管理工作。
- 分布性 :包括操作分布和数据分布。
- 健壮性
- 解释性 :java语言不针对CPU进行编译,由JVM解释和执行。
- 多线程 :java语言支持多线程,允许多个线程共存于统一内存中,且共享资源。
- 多态 开源
- 结构中立 安全性
注释
注释:用来解释说明程序
1. 单行注释 ://注释内容
2. 多行注释 :/* 注释内容*/
3. 文档注释 :/** 文档内容*/
关键字
关键字 :也称为保留字,是在ava语言中已经被赋予了特定意义的单词符号,不是标识符,不能作为类名。(简单讲就是已经被Java征用了的英文单词)
关键字的特点 :单词全是小写 class 关键字用来定义一个类。
(如果使用的是第三方记事本,那么蓝色显示的单词就是关键字)
常用关键字
关键字 | 用途 |
---|---|
byte、short、int、long。char、float、double、Boolean、void | 基本类型 |
new、this’null、super | 创建引用对象 |
if、else、swich、case、default | 选择语句 |
do、while、for | 循环语句 |
true、false | 布尔量 |
private、public、protect、final | 类型修饰(包含访问控制) |
标识符
通常是对类,方法、变量,常量类型、数组和文件等的命名,称之为标识符,标识符是一个具有特定规则的字符序列。
命名规范 :
- 英文字母跟数字或一些符号的组合
- 不能以数字开头,也不要用纯数字命名 错误的例子: 1A , 123
- 不要用关键字来命名 例如 true,null,false
- 尽量不要用特殊的符号来命名 但是 (_) ,($) 可以使用
- 命名最好见名知意
- 给类命名首字母大写,如果有多个字母采用驼峰式命名 例如 :StudentName
基本数据类型
整数型 | 字节数 | 范围 |
---|---|---|
byte | 1(8bit) | -128 ~ 127 |
short | 2(16bit) | -2^15 ~ 2^15 - 1 |
int | 4(32bit) | -2^31 ~ 2^31 - 1 |
long | 8(64bit) | -2^63 ~ 2^63 - 1 |
浮点数 | 字节数 | 范围 |
float | 4(32bit) | -3.40310^38 ~ 3.40310^38 |
double | 8(64bit) | -1.79810^308 ~ 1.79810^308 |
字符型 | 字节数 | 范围 |
char | 2(16bit) | 0 ~ 2^16 - 1 = 65535 |
类型转换
自定义类型转换
- 按照“字节数少的类型转换为字节数多的类型“的原则。
- 一般按照“byte——short”或“char——int——long——float——double”的原则进行类型转换。
自动类型提升:byte short char 在参与数学运算时,会自动提升为int类型,如果还有long ,float double 参与运算,则会相应的提升为 long float double ,布尔类型不参与数学运算,byte short char 之间不发生转换。byte a=1; short b=2; long num=3L; float f=1.1F; double dd=4; //byte r=a+b; 报错 double r=a+b+num+f+dd; System.out.println(r); System.out.println(dd); 结果为: 11.0999999 4.0
强制类型转换
强制类型转换的语法形式为:
(<类型>) (<表达式>)
需要注意的是:
强制类型转换:强制将一个数据,转换成需要的数据类型,有可能会发生精度损失的问题。(一般不建议使用)
常量
- 常量 :是基本类型值的源代码表示形式,在源代码中是一个字符串,语法上是一个单词符号。(简单讲就是在程序执行过程当中,其值不发生变化的量。)
- 常量:字面值常量, 自定义常量
- 字面值常量:整数常量,浮点数常量,小数常量、字符常量,布尔常量,字符串常量和 null常量。
1. 整数常量:十进制、十六进制、八进制、二进制
- 十进制 :若干个0~9数字组成的串。例如 :123 452
- 十六进制 :以“0x”或“0X”开头,若干个0~9、a-f和A-F组成的串。例如 :0x123
- 八进制 :若干个0~7组成的串,首字符为0. 例如 :012 013
- 二进制 :以“0b”或“0B”开头,若干个0或1组成的字符串。 例如 :0b101 0B111
2. 小数常量:所有小数 例如 :1.1 ,3.14
3. 字符常量:就是用单引号括起来的单个字符 例如: ‘1’ ‘A’ ‘B’ ‘我’
4. 布尔常量: true false (这两个词也是关键字)
5. 字符串常量:就是用双引号所括起来的单个或多个字符 “helloworld”
6. null常量 :null (也是个关键字)可以用于给符合数据类型的变量赋初值等。
变量
变量 :一个有类型的储存单元(简单讲就是在程序执行过程中,其值发生改变的量),而且在编程是就已经确定类型,其类型可以是基本类型或引用类型。变量值由赋值(=)、自增(++)、自减(- -)运算来改变。
变量类型分为:
- 类变量
- 实例变量
- 阵列组件
- 方法形参
- 构造形参
- 例外形参
- 局部变量
变量注意事项:
- 作用域问题 :变量定义在哪一级大括号中,哪个大括号的范围就是这个变量的作用域。相同的作用域中不能定义两个同名变量。
- 初始化值问题 :没有初始化值不能直接使用
- 在一行上建议只定义一个变量 :可以定义多个,但是一般不建议
运算符
1. 算术运算符
运算符 | 含义 | 举例 | 注释 |
---|---|---|---|
++ | 自增 | x++ | 先运算在自加 |
- - | 自减 | - -x | 先自减在运算 |
++ | 自加 | ++x | 先自加后运算 |
- - | 自减 | x- - | 先自减后运算 |
+ | 取正值 | ||
- | 取负值 | ||
* | 乘法 | ||
/ | 除法 | ||
% | 取余 |
2. 赋值运算符
运算符 | 含义 | 举例 | 注释 |
---|---|---|---|
= | 赋值 | x=y+z | 把右边的值赋值到左边 |
+= | 加 | x+=y | x=x+y |
-= | j减 | x-=y | x=x-y |
<<= | 左移 | x<<=2 | x=x<<2 |
>>= | 带符号右移 | x>>=1 | x=x>>1 |
>>>= | 不带符号右移 | x>>>=3 | x=x>>>3 |
3. 比较运算符
运算符 | 含义 | 举例 | 注释 |
---|---|---|---|
!= | 等于 | x==MAX_VALUE | x值等于MAX_VALUE时结果为true。 |
== | 不等于 | x!=y | 比较x和y的值,x不等于y时结果为true。 |
“==”和“=”是两个完全不同的运算符。
4. 逻辑运算符
- &&(逻辑与) :&& 只要左端为false 右端不需要运算,只有左端为true 右端会去运算
- &(逻辑与) :&左右两端都要运算,只要任意一端是false 其最终结果都是false, 只有两端都为true最终结果才是true。
- | (逻辑或) :| 两端都需要运算,只要任意一端为true ,其最终结果都是true,只有两端都是false,其最终结果才是false.
- || (逻辑或):||只要左端为true 右端就不需要运算,只有左端为false 右端才会去运算。
- ^ (逻辑异或) :相同为false 不同为true。
- ! (逻辑非) :取相反的结果,例如:!(4>6)结果为true。
5. 位运算符
位运算是对二进制补码进行的运算
位运算符有 :
- ~ :按位取反
System.out.println(~3);
结果为:-4
0000 0011 补码
1111 1100 取反
---------------------------
1000 0100 补码
- & :按位与
System.out.println(2&3);
结果为:2
0000 0010 补码
0000 0011 补码
- ^ :按位异或
System.out.println(1^4);
结果为:5
- | :按位或
System.out.println(1|2);
结果为:3
- << :左移 指 把<<左边的数据乘以2的移动次幂 例如 10<<3 结果 10*2^3=80
6.>> :带符号右移 指把>>左边的数据除以2的移动次幂 例如 40>>3 结果 40/2^3=5
7.>>> :不带符号右移
运算符 | 规则 |
---|---|
& | 有0则0 |
| | 有1则1 |
^ | 相同则0,不同则1 |
~ | 按位取反 0变1 1变0 |
6. 三目运算符
三元(三目)运算符的格式
(关系表达式) ? 表达式1 : 表达式2;
三元运算符的执行流程
计算关系表达式的值,如果为true,运算后的结果是表达式1;如果为false,运算后的结果为表达式2;
例如 :int a=(10>20)?30:50; a=50
三元运算符是(?:)是又结合的,表达式“a?b:c?d:e?f:g”的含义是“a?b:(c?d:(e?f:g))”;
在三元表达式中可以使用嵌套,但一般不会嵌套,因为阅读性不好,即使使用嵌套也会用括号分隔;