目录
(原创文章,转载请注明出处)
一、概述
- Java是美国sun公司(2009年 sun公司被Oracle公司收购)在1995年推出的一门计算机高级编程语言
- Java 之父:詹姆斯·高斯林(James Gosling)
- Java特点:简单性、面向对象、分布性、编译和解释性、稳健性、安全性、可移植性、高性能、多线程性、动态性(不同资料说法不一)
二、注释
注释是写在程序中对代码进行解释说明的文字,方便查看和理解程序代码
2.1单行注释
// 注释内容
2.2多行注释
/*
注释内容
注释内容
*/
2.3文档注释
/**
注释内容
注释内容
*/
三、标识符
- 标志符就是名字,在编程过程中,经常需要在程序中定义一些符号标记一些名称,如包名、类名、方法名、参数名、变量名等,这些符号被称为标识符
- 标识符可以由字母、数字、下画线(_)和美元符号($)组成,不能以数字开头,不能是Java中的关键字
- 类名和接口名每个单词的首字母要大写,变量名和方法名使用驼峰命名法,常量名所有字母都大写,单词之间用下划线连接
标识符不能是Java中的关键字,关键字如下:
abstract | continue | for | new | switch |
assert | default | goto | package | synchronized |
boolean | do | if | private | this |
break | double | implements | protected | throw |
byte | else | import | public | throws |
case | enum | instanceof | return | transient |
catch | extends | int | short | try |
char | final | interface | static | void |
class | finally | long | strictfp | volatile |
const | float | native | super | while |
注:后续学习中会用到,不用刻意去记
四、基本数据类型
4.1分类
Java中数据类型分为基本数据类型和引用数据类型,这里主要研究基本数据类型
4.2比较
数据类型 | 占用空间 | 封装类 |
---|---|---|
字节型(byte) | 8位(1个字节) | Byte |
短整型(short) | 16位(2个字节) | Short |
整型(int) | 32位(4个字节) | Integer |
长整型(long) | 64位(8个字节) | Long |
单精度浮点数(float) | 32位(4个字节) | Float |
双精度浮点数(double) | 64位(8个字节) | Double |
字符型(char) | 16位(2个字节) | Character |
布尔型(boolean) | 至少8位(1个字节) | Boolean |
4.3说明
- 长整型(long)赋值时,所赋的值超出了int型的取值范围,后面必须加上字母L(或小写l),未超出时,则可加可省
- 单精度浮点数类型(float)的变量赋值时,赋值后面的字母F(或者小写f)必须加;双精度浮点数类型(double)的变量赋值时,赋值后面的字母D(或小写d)可加可省
- 一个字符串要用一对英文半角格式的单引号括起来,不能是双引号
4.4初始值
数据类型 | 初始值 |
---|---|
byte、short、int、long | 0 |
float、double | 0.0 |
char | 一个空字符,即’\u0000’ |
boolean | false |
引用数据类型 | null,表示变量不引用任何对象 |
五、数据类型转换
8种类型的取值范围:byte<short<(char<)int<long<float<double(可见:整数型<浮点型)
5.1自动类型转换
(1)定义
自动类型转换指的是两种数据类型在转换的过程中不需要显式地进行声明,由编译器自动完成,自动类型转换也叫隐式类型转换(须同时满足:数据类型兼容,范围小变大)
(2)情况
- 整数类型之间可以实现转换(byte、short、int、long小变大转换)
- 整数类型转换为float类型(byte、short、int、char ⇒ float)
- 其他类型转换为double类型(byte、short、int、long、float、char⇒double)
- 特殊情况:byte、short、char三种类型的数据在(单独进行或者分别进行)运算的时候,都会直接先提升为int,然后再进行运算
(3)代码
byte a = 10;
short b = a;
int c = b;
long d = c;
System.out.println(d);
// 输出:10,证明成功转换
5.2强制类型转换
(1)定义
指的是两种数据类型之间的转换需要进行显式地声明,强制类型转换也叫显式类型转换(数据类型不兼容,范围大变小)
(2)说明
- 语法:目标类型 变量 = (目标类型)值
- 在对变量进行强制类型转换时,如果将取值范围较大的数据类型强制转换为取值范围较小的数据,容易造成精度损失和数据溢出
(3)代码
①精度损失
float a = 1.5f;
int b = (int) a;
System.out.println(b);
// 输出:1
// 若改为int b = a; 这种是隐式类型转换,会报错
②数据溢出
int a = 300;
byte b = (byte) a;
System.out.println(b);
// 输出:44
为何输出结果为44呢?解析如下:
byte取值范围:-2^7 ~ 2^7-1;int取值范围:-2^31 ~ 2^31-1
int类型300的原码:00000000 00000000 00000001 00101100
int类型300的补码:00000000 00000000 00000001 00101100
byte类型300的补码:00101100
byte类型300的原码:00101100
二进制数00101100对应的十进制数为:44
六、运算符
6.1算术运算符
符号 | 说明 | 符号 | 说明 |
---|---|---|---|
+ | 加法 | ++ | 自增(前) |
- | 减法 | ++ | 自增(后) |
* | 乘法 | -- | 自减(前) |
/ | 除法 | -- | 自减(后) |
% | 取模(即取余) |
说明:
- 运算符++或--放在操作数的前面(++a),则先进行自增或自减运算,再进行其他运算
- 运算符++或--放在操作数的后面(a++),则先进行其他运算,再进行自增或自减运算
相关代码如下:
int a = 1;
int b = 2;
int x = a + b++;
System.out.println("b=" + b);
System.out.println("x=" + x);
// 输出:b=3 x=3
// ++放在操作数b之后,b先自增在进行与a相加,x=a+b(自增之前的b)
6.2赋值运算符
符号 | 说明 | 符号 | 说明 |
---|---|---|---|
= | 赋值 | %= | 模等于 |
+= | 加等于 | *= | 乘等于 |
-= | 减等于 | /= | 除等于 |
说明:
a+=b ⇔ a=a+b ;a-=b ⇔ a=a-b ;
a*=b ⇔ a=a*b ; a/=b ⇔ a=a/b ;
a%=b ⇔ a=a%b
6.3比较运算符
符号 | 说明 | 符号 | 说明 |
---|---|---|---|
== | 相等于 | > | 大于 |
!= | 不等于 | <= | 小于等于 |
< | 小于 | >= | 大于等于 |
说明:
比较运算符用于对两个数值或变量进行比较,结果是一个布尔值,即true或false
6.4逻辑运算符
符号 | 说明 | 符号 | 说明 |
---|---|---|---|
& | 与 | && | 短路与 |
| | 或 | || | 短路或 |
^ | 异或 | ! | 非 |
说明:
- 逻辑运算符用于对布尔型的数据进行操作,其结果仍是一个布尔值
- 与、短路与:有假则假;或、短路或:有真则真,例:0&1=0
- 异或:同真同假为假,不同真假为真,例:true ^ true= false
- 与(|):无论表达式1是真还是假,都会继续判断表达式2;短路与(||):如果表达式1为假,那么整个结果为假,不会再去判断表达式2的真假
- 或(&):无论表达式1是真还是假,都会继续判断表达式2;短路或(||):如果表达式1为真,那么整个结果为真,不会再去判断表达式2的真假
6.5三元运算符
语法:判断条件 ? 表达式1 : 表达式2
相关代码如下:
int x = 0;
int y = 1;
int max = x > y ? x : y;
System.out.println(max);
// 输出:1
说明:
当判断条件成立(为true)时,计算表达式1的值作为整个表达式的结果,否则计算表达式2的值作为整个表达式的结果
6.6运算符优先级
运算符 | 优先级 | 运算符 | 优先级 |
---|---|---|---|
. [ ] ( ) | 1 | & | 8 |
++ -- ~ ! | 2 | ^ | 9 |
* / % | 3 | | | 10 |
+ - | 4 | && | 11 |
<< >> >>> | 5 | || | 12 |
< > <= >= | 6 | ?: | 13 |
== != | 7 | =、*=、/=、%=、+=、-= <<=、>>=、>>>=、&= 、^=、|= | 14 |
若有不妥之处,恳请读者批评指正