第一章 标识符
- 标识符: 程序中我们自己定义的内容。比如类的名字、方法的名字和变量的名字等等,都是标识符。
- 命名规则:
硬性要求
- 标识符可以包含 英文字母26个(区分大小写)、0-9数字、$(美元符号)和_(下划线)。
- 标识符不能以数字开头。
- 标识符不能是关键字。
- 命名规范:
软性建议
- 类命名规范:首字母大写,后面每个单词首字母大写(大驼峰式)HelloWorld
- 变量名规范:首字母小写,后面每个单词首字母大写(小驼峰式)helloWorld
- 方法名规范:同变量名
第二章 常量
2.1概述
- 常量:是指在程序中固定不变的量
2.2分类
类型 | 含义 | 数据举例 |
---|---|---|
整数常量 | 所有的整数 | 0,1,567,-9 |
小数常量 | 所有的小数 | 0.0,-0.1 |
字符常量 | 单引号引起来,只能写一个字符,必须要有内容 | ‘a’,’ ’(中间是空格也可以) |
字符串常量 | 双引号引起来,能写多个字符,也可不写 | “a",“Hello”,”“ |
布尔常量 | 只有两个值 | true,false |
空常量 | 只有一个值 | null |
2.3 基本数据类型(四类八种)
整数型 byte
short
int
long
浮点型 float
double
字符型 char
布尔型 boolean
数据类型 | 关键字 | 内存占用 | Java取值范围 |
---|---|---|---|
字节型 | byte | 1字节 | -128~127 |
短整型 | short | 2字节 | -32768~32767 |
整型 | int(默认) | 4字节 | -231~231-1 |
长整型 | long | 8字节 | -263~263-1 |
单精度浮点数 | float | 4字节 | 1.4013E-45~3.4028E+38 |
双精度浮点数 | double(默认) | 8字节 | 4.9E-324~1.7977E+308 |
字符型 | char | 2字节 | 0-65535 |
布尔型 | boolean | 1字节 | true false |
注意!!
Java中的默认类型:整数型
int
、浮点型double。
浮点数中要使用float类型要在数字后加上一个F(大小写都可但是推荐大写);整数使用long加上字母L。
二进制的计算机无法准确的表示分数。
浮点数使用了科学计数法所以内存占用和取值范围不一定相关;例如long和float。
2.4 引用数据类型
类
、数组
、接口
、字符串
(后面再学)
第三章 变量
3.1 概述
- 变量:程序中可以变化的量
3.2 创建变量方法
- 格式
-
数据类型 变量名称;
变量名称 = 数据值;
// =号代表赋值 将右边的数据值赋值给左边的变量int niu; niu = 100;
-
数据类型 变量名称 = 数据值;
int niu = 100;
-
数据类型 变量名称1,变量名称2,...;
变量名称1 = 数据值;
变量名称2 = 数据值;
…;int a,b,c; a = 1; b = 2; c = 3;
-
数据类型 变量名称1 = 数据值,变量名称2 = 数据值,...;
int a = 1,b = 2,c = 3;
- !!注意!!
- 数值的范围不能超过左侧数据类型的取值范围。
- 在同一个{}内,变量名称不能重复。(同理变量的使用不能超出作用域)
- float和long要记得加上F和L。
- 没有赋值的变量不能使用。
第四章 数据类型转换
当数据类型不同时,将会发生数据类型转换
4.1 自动类型转换(隐式)
- 特点:代码不需要进行特殊处理
- 规则:数据范围从小到大
long num1 = 100;
/*
右边100是int类型,左边是long
赋值号把右边的int常量,交给左侧的long变量储存
int --> long,符合了范围从小到大,所以代码发生了自动类型转换
*/
4.2 强制类型转换(显式)
-
代码需要经过特殊的处理,不能自动的转换
-
格式:
范围小的类型 范围小的变量名 = (范围小的类型) 原本范围大的数据;
int num = (int) 100L;
-
注意事项
- 强制类型转换一般不推荐使用,因为有可能发生精度损失、数据溢出(原本大范围的数据装不进范围小类型的变量中)
int num2 = (int) 6000000000L; system.out.println(num2);//1705032704 这就是溢出的数据 int num3 = (int) 3.5; system.out.println(num2);//3 这就是精度损失;不是四舍五入而是舍弃掉小数位
- byte/short/char这三种类型都可以发生数学运算
一旦char类型发生了数学运算,那么它就会按照一定的规则翻译成一个数字char zifu1 = 'A'; system.out.println(zifu1 + 1);//66 大写字母A被当成65处理
- byte/short/char这三种类型在运算的时候,都会先提升为int类型,在进行计算
byte num4 = 40;//注意!右侧的数值大小不能超过左侧的类型范围 short num5 = 50; int result1 = num4 + num5; short result2 = (short)(num4 + num5); system.out.println(result1);//90 byte + short --> int + int --> int system.out.println(result2);//90 int强制转化为short,必须保证逻辑上的真实大小没有超过short类型范围,否则会发生数据溢出
- boolean类型不能发生数据类型的转换
- 强制类型转换一般不推荐使用,因为有可能发生精度损失、数据溢出(原本大范围的数据装不进范围小类型的变量中)
4.3 ASCII码介绍
- ASCII码表:American Standard Code for Information Interchange 美国信息交换标准代码 0-127
- Unicode码表:万国码表 从128开始
- 记住’0’-48 ‘A’-65 ‘a’-97
第五章 运算符与表达式
运算符是进行特定操作的符号
5.1 算数运算符
算数运算符包括 | |
---|---|
+ | 加法运算符,字符串连接运算符 |
- | 减法运算 |
* | 乘法运算 |
/ | 除法运算 |
% | 取模运算,两个数字相除取余数 |
++ 、-- | 自增自减运算 |
Java中,整数使用以上运算符,无论怎么计算也不会得到小数
public static void main(String[] args){
int i = 1234;
System.out.println(i/1000*1000);//1000
}
注意:一旦运算当中有不同类型的数据,结果会是数据类型范围大的那种
- 四则运算当中的加号"+"有三种用法:
1.对于数值来说,那就是加法
2.对于字符char类型来说,在计算之前,char会被提升为int,然后在计算
3.对于字符串String(首字母大写,并不是关键字)来说,加号代表字符串连接
4.任何数据类型和字符串连接的时候,结果都会变成字符串
String str1 = "Java";
System.out.println(str1 + 20 + 30);//Java2030
System.out.println(str1 + (20 + 30));//Java50
- 自增自减运算符
含义:让一个变量涨一个数字1,或者让一个变量降数字1
格式:++var; --var;
使用方法:
- 单独使用:不能和其他任何操作混合,自己独立成为一个步骤。前后++没有区别。
- 混合使用:和其他操作混合,例如赋值混合,或者打印操作混合,等。
A.如果是前++,那么这个变量立刻马上+1,然后拿着结果进行使用【先加后用】
B.如果是后++,那么首先使用变量本来的数值,然后再让变量+1.【先用后加】 - !!!不管先加后加最终变量都要加!!!
注意:只有变量才能使用自增自减运算符。常量不能发生改变,所以不能用。//例1 int num1 = 20; System.out.println(++num1);//21 混合使用,先++,变量马上变成21,然后打印结果21 System.out.println(num1);//21 int num2 = 30; System.out.println(num2++);//30 混合使用,后++,首先使用变量本来的30,然后再让变量+1得到31 System.out.println(num2);//31 //例2 int num3 = 40; int result1 = --num3; System.out.println(result1);//39 System.out.println(num3);//39 int num4 = 50; int result2 = num4--; System.out.println(result2);//50 System.out.println(num4);//49 //例3 复杂运算(练习用,编程时应该让人通俗易懂的代码才是好代码) int x = 10; int y = 20; int result3 = ++x + y--; System.out.println(result3);//31 System.out.println(x);//11 System.out.println(y);//19
5.2 赋值运算符
赋值运算符 | |
---|---|
= | 等于号 |
+= | 加等于 |
-= | 减等于 |
*= | 乘等于 |
/= | 除等于 |
%= | 取模等于 |
-
基本赋值运算符
-
就是一个“=”,代表将右侧的数据交给左侧的变量
-
复合赋值运算符
- += a += 1 相当于 a = a + 1
- -= b -= 2 相当于 b = b - 2
- *= c *= 3 相当于 c = c * 3
- /= d -= 4 相当于 d = d / 4
- %= e%=5 相当于 e = e % 5
-
注意:
1.只有变量才能使用赋值运算符
2.复合赋值运算符其中隐含了一个强制类型转换
byte num = 30;
num += 5;
//num = num +5;
//num = byte + int;
//num = int + int;
//num = int;
//num = (byte)int;
System.out.println(num);//35
5.3 比较运算符
比较运算符 | |
---|---|
== | 比较符号两边数据是否相等,相等结果是ture。 |
< | 比较符号左边的数据是否小于右边的数据,如果小于结果是ture。 |
> | 比较符号左边的数据是否大于右边的数据,如果大于结果是ture。 |
<= | 比较符号左边的数据是否小于或等于右边的数据,如果小于结果是ture。 |
>= | 比较符号左边的数据是否大于或等于右边的数据,如果大于结果是ture。 |
!= | 不等于符号,如果符号两边的数据不相等,结果是ture。 |
- 注意:
- 比较运算符的结果一定是boolean值,成立就是ture,不成立就是false
- 如果进行多次判断,不能连写(例如 :2 < x < 5 ;这个等式在数学中是成立的,但是程序中不可以这么写,只能用逻辑运算符来判断)
5.4 逻辑运算符
- 用于连接若干个boolean值
逻辑运算符 | |
---|---|
&& | 与(并且) 全是true,才是true;否则就是false。 |
|| | 或(或者) 至少一个是true,就是true;全是false,才是false。 |
! | 非(取反) 本来是true,变成false;本来是false,变成true。 |
- 与
&&
、或||
,具有短路的效果,如果根据左边已经可以判断得到最终结果,那么右边的代码不再执行,从而节省一定的性能。
//false && ...
int a = 10;
System.out.println(3 > 4 && ++a < 100);//false
System.out.println(a);//10
//true || ...
int b = 20;
System.out.println(3 < 4 && ++b < 100);//true
System.out.println(b);//20
- 注意:
- 逻辑运算符只能用于boolean值
- 与、或运算符左右都要有boolean值,取反只要有唯一个boolean值
- 与、或运算符,如果有多个条件可以连写
//2 < x < 5应该表示为
2 < x && x < 5;
5.5 三元运算符
- 一元运算符:只需要一个数据就可以进行操作的运算符。例如:取反
!
、自增++
、自减--
- 二元运算符:需要两个数据才可以进行操作的运算符。例如:加法
+
、减法-
- 三元运算符:需要三个数据才可以进行操作的运算符。
- 格式:数据类型 变量名称 = 条件判断 ? 表达式A : 表达式B;
- 流程:如果成立为true,那么将表达式A的值赋值给左边的变量
如果成立为false,那么将表达式B的值赋值给左边的变量
int a = 10;
int b = 20;
int max = a > b ? a : b;//判断a>b是否成立
- 注意:
- 必须同时保证表达式A和表达式B都符合左侧数据类型的要求
- 三元运算符的结果必须被使用
//情况1
int result = 3 > 4 ? 2.5 : 10;//错误;因为2.5不符合左侧的int数据类型
//情况2
System.out.println(a > b ? a : b);//正确的;因为左边没有指定类型,且结果有被(打印)使用
//情况3
a > b ? a : b;//错误;结果没被(赋值)使用