注释 关键字 标识符 常量 变量 数据类型 大小 类型转换 字符类型 (算术 赋值 自增自减 比较 逻辑短路现象 位移 三元) 运算符
都是日后经常会用到的,除了运算符要多做练习。其余概念性的东西能自述说清每个是怎么回事就行。
注释
对代码作介绍解释说明的文字
对程序的设计思路进行描述,起到介绍解释说明的作用,也能使我们调试错误
注释的特点
- 编译器不会把注释当做程序的一部分进行解析
- 执行过程中遇到注释就会直接跳过
注释的分类
单行注释:
使用 // 作用可以注释掉一行代码 , // 之后就是注释的部分
单行注释可以嵌套 // // //
样式://我是被注释的内容
快捷键:ctrl+/ 或 ctrl+shift+C
多行注释:
使用的符号 /* */ 两个符号中间的部分就是要被注释的内容(也可以单行注释)
多行注释不能嵌套 /* /* */ */
快捷键:ctrl+shift+/
3.文档注释
package Chating;
public class Shuzu {
public static void main(String[] args) {
System.out.println("HelloWorld");//这是用来解释代码的单行注释
/*
写代码的步骤:
构思
敲代码
测试运行
找bug
完善代码
*/
//以上是多行注释
}
}
关键字
是被赋予特殊含义的一些英文单词
特点
- 都要小写
- 自己给标识符起名字的时候,不能和这些关键字重名
- 有两个关键字是目前没有使用的,const goto,保留字 不代表以后不会用
标识符
用于给java中的包、类、变量、常量、接口、抽象类,枚举,起名字用的字符序列
构成规则
-
英文字母 a~z A~Z
-
数字0~9
-
特殊符号 $ _
-
不常用的字符:除了英文意外其他语言的符号 比如中文
即:标识符由字母、数字、下划线“_”、汉字、美元符号“$”组成,第一个字符不能是数字。
标识符的使用注意事项
- 不要和关键字重名
- 不要使用数字开头
- 标识符没有长度限制
- 标识符对大小写敏感
常量
它的值在运行期间恒定不变。并且常量在程序中只能被引用,而不能被重新赋值
分类
基本数据类型的常量
- 整数常量:所有整数 (例:1 , 6 , 9…)
- 小数常量:所有小数(例:1.86 , 3.14…)
- 字符常量:用单引号括起来的单个字符 (例:‘a’ , ‘c’…)
- 布尔常量:用来标识真假的常量 true和false
引用数据类型的常量
- 字符串常量:使用双引号引起来的字符 (例:”HelloWorld”)
- 空常量:表示空,不指向任何类型:null
package Chating;
public class Shuzu {
public static void main(String[] args) {
System.out.println(10);//整数常量
System.out.println(3.14);//小数类型
System.out.println('a');//字符常量
System.out.println(false);//布尔常量
System.out.println("String");//字符串常量
String name = null;
System.out.println(name);//空常量 对象为空字符串
}
}
变量
在程序运行过程中,其值可以发生改变的量
格式
数据类型 变量名 = 变量值(初始值);
变量代表了一块有名字的内存,内存中的数据会发生变化
数据类型
Java是强类型语言 必须在定义变量时就说明你的变量在内存中的大小,这个大小是由数据类型决定的
数据类型分类
基本数据类型:在jdk中已经定义好的一些数据类型,简单的数据段
引用数据类型:数据描述的不是数据本身,而是描述真正的数据在内存中存储的“地址”,一般都是一些自定义的类,引用相当于是基本数据类型的一个组合,形成了一个复杂的数据类型
基本数据类型:四类八种
package Chating;
public class Shuzu {
public static void main(String[] args) {
byte b = 127;//字节变量
System.out.println(b);
short s = 100;//短整型
System.out.println(s);
int i = 200;//整型
System.out.println(i);
long l = 10000; //长整形
System.out.println(l);
float f = 3.14f;//float类型
System.out.println(f);
double d = 1.80;//double类型常量
System.out.println(d);
char a = 'A';//字符类型
System.out.println(a);
boolean bo = true;//boolean
System.out.println(bo);
}
}
数据类型转换 隐式转换
当小范围的的数据类型数据给大范围的数据赋值时,小范围的数据类型会自动提升为大范围的数据类型,提升后的这数据还可以继续进行运算
byte<short=char<int<long<float<double
注意:前三者在进行运算时会自动向上转型为int类型
数据类型转换 强制(显式)转换
大范围的数据类型要转换为小范围时 就需要强制转换
格式:
(要转换的数据类型)大范围数据类型的数据
强制转换的运行结果,有可能出现丢失,一般不推荐使用键盘录入
package Chating;
public class Shuzu {
public static void main(String[] args) {
int a = 100;//想转为byte
//(要转换的数据类型)要转换的数据
byte b = (byte)a;
System.out.println("b="+b);
//大范围的向向小范围转换要考虑小范围是否能装的下
int a2 = 1000;//int范围-2^31 - 2^31-1
byte b2 = (byte)a2;//byte范围-128 - 127
System.out.println("b2="+b2);//强制转换的运行结果 因范围大小出现数据丢失
}
}
字符类型
用单引号括起来的单个字符 数据类型时就是char
在计算机中所有数据都是用数字表示的,字符也是,每个字符都对应着一个数字,
编码:从数字转换到字符的过程
解码:从字符转换到数字的过程
转换的过程要依赖于编码工具
ASCII标
可以发现数字字符大小写英文都是连续的
每个国家都有自己的字符 因此都需要各自的编码表 中国的编码表:GBK
GBK: 专门用来解决中文编码,包含全部中文字符。无论中英皆为双字节。
UTF-8:包含全世界所有国家需要用到的字符 万国码表,英文占1个字节,中文占3个字节
Utf-8的中文字节储存空间(3个)比GBK(2个)的要高,因此对于英文字符较多的论坛适用于UTF-8节省空间。
为了统一 设计出了了个统一的编码表unicode表,每个字符都是两个字节,为每种语言中的每个字符设定了统一并且唯一的二进制编码,可以表示世界上所有国家的字符,使计算机实现跨语言、跨平台的文本转换及处理java底层就是用的unicode编码表
字符串类型
用双引号引起来的字符序列
如果是字符串类型的变量,那储存的是字符串中字符储存的地址
字符串可以和任意数据类型进行拼接,拼接后都自动转为字符串类型
因此如果要把其他类型转为字符串 直接+“”即可
例如
package Chating;
public class Shuzu {
public static void main(String[] args) {
String name = "ings";//定义字符串类型变量
System.out.println(name);
double h = 1.80;
System.out.println("身高为" + h);
//字符串和其他类型拼接后,会自动转为字符串类型
String h1 = "身高为" + h;
System.out.println(h1);
}
}
运算符
用来运算符操作数据的符号
运算符的分类
- 算术运算符
- 赋值运算符
- 比较运算符
- 逻辑运算符
- 位移运算符
- 自增自减运算符
- 三元运算符
算术运算符
1、+:加法运算符
(1) 表示两个数的和
(2) 字符串的拼接
(3) 表示正数
2、-:减法运算符
(1) 表示负数
(2) 表示两个数的差
3、*:乘法运算符
(1) 求两个数的乘积
4、/:除法运算符
(1) 两边都是整数,只能得到整数部分
(2) 两边中有一个是小数,得到就是小数
(3) 除数不能为0
5、%:取余运算符
(1) 用来求两个数据的余数部分
(2) 两边都是整数,余数也是整数
(3) 两边中有一边是小数,结果就是小数
(4) 作用:判断奇偶,对2 取余 等于0 就是偶数,否则奇数
package Chating;
public class Shuzu {
public static void main(String[] args) {
String str = "Hello"+"World";//表示字符串的拼接
System.out.println(str);
int a = 7;
int b = 3;
double c = 6.3;
int res = a/b;//两边都是整数的时候 只能得到整数部
System.out.println("a/b的值为"+res);
}
}
赋值运算符
把赋值运算符右边的数据赋值给左边的变量
赋值运算符: =
-
+= i = i + 1; i += 1;
-
-= i = i - 3; i -= 3;
-
*=
-
/=
-
%=
package Chating;
public class Shuzu {
public static void main(String[] args) {
int a = 7;
int b = 3;
b += a;//b = b+a
System.out.println(b);
int c = 2;
c -= a;//c = c-a
System.out.println(c);
int d = 4;
d *= a;//d = d*a
System.out.println(d);
int e = 21;
e /= a;//e = e/a
System.out.println(e);
int f = 21;
f %= a;//f = e%f
System.out.println(f);
}
}
自增自减运算符
1、++ 和 –
2、++:自增运算符
3、作用:在某个变量的基础上自增1
4、++在单独使用的时候放在变量前后没有任何区别
5、++在变量前,先对变量+1,再取值进行运算,++在变量后,先取的值,再进行运算,无论是在前还是在后,变量最终都会+1
package Chating;
public class Shuzu {
public static void main(String[] args) {
int a = 1;
++a;//a += 1 a = a + 1;
System.out.println(a);
int b = 2;
System.out.println(b++);//先取值 再计算 这里打印的是2(先取值)打印完在进行b+1的运算
System.out.println("b的值为"+b);
System.out.println("-----------------");
int c = 2;
int result = ++c + 3 + c++;// 3+3+3(c++ = 3++ 这里先取值3,再进行3+1的计算)
System.out.println(result);
System.out.println("c的值为"+c);
}
}
比较运算符
1、用于比较两个数据是否相等或者大小关系的运算符,返回的值为布尔类型
分类:
-
是否相等: == != 这两个符号可以比较任意数据类型的
-
大小关系: > < >= <= 这四个只能比较基本数据类型的数据(整数,小数,字符)
返回结果都是boolean类型的,true是真 false是假
package Chating; public class Shuzu { public static void main(String[] args) { int a = 8; int b = 18; int c = 8; System.out.println(b==a);//a与b不相等 返回的是布尔类型的false System.out.println(c!=a);//c与b相等 返回同为false System.out.println((a=c)<=b);//8=8<=18 } }
逻辑运算符
用来处理逻辑运算的符号
处理的结果就是boolean类型的数据
&& || !
1.&&逻辑与,同真为真,否则为假
(1) true && true true
(2) true && false false
(3) false && true false
(4) false && false fasle
2.||逻辑或,同假为假,否则为真
(1) false || false false
(2) true || false true
(3) false || true true
(4) true || true true
3.!逻辑非 ,遇真为假,遇假为真
(1) !true false
(2) !false true
package Chating;
public class Shuzu {
public static void main(String[] args) {
boolean a = 3 > 1 && 2 == 2;//同真为真
System.out.println(a);
boolean b = 3 > 1 && 2 != 2;//一边为假就为假
System.out.println(b);
boolean c = 3 < 1 && 2 != 2;//同假为假
System.out.println(c);
System.out.println("--------------------");
boolean a1 = 3 > 1 || 2 == 2;//同真为真
System.out.println(a1);
boolean b1 = 3 > 1 || 2 != 2;//一边为真就为真,否则为真
System.out.println(b1);
boolean c1 = 3 < 1 || 2 != 2;//同假为假
System.out.println(c1);
System.out.println("============================");
int i= 1;
boolean a2 = 3 < 1 & i++ > 0;
System.out.println(a2);
System.out.println(i);//i = 2
int i2= 1;
boolean a3 = 3 < 1 && i2++ > 0;//短路现象
System.out.println(a3);
System.out.println(i2);//i = 1
//&&相比于&作用相同,但&&存在短路现象,当前一布尔值已确定为false时,就不会进行后一布尔值的判断
//因为无论后一布尔值为真为假,此次整个式子的布尔值都为false,因此没有进行后一布尔值判断的必要
System.out.println("--------------------");
int j = 3;
boolean b2 = j > 2 | ++j > 1;
System.out.println(b2);
System.out.println(j);//j = 4
int j2 = 3;
boolean b3 = j2 > 2 || ++j2 > 1;
System.out.println(b3);
System.out.println(j2);//j = 3
//同理的短路现象,||在判断一布尔值已确定为true时,论后一布尔值为真为假,整个式子的布尔值都为true,就不会进行后一布尔值的判断
}
}
位移运算符
对于数据在内存中的表示,按照位移的方式进行运算的符号,以此达到对数据计算的目的
位移运算符只能对整数的数据进行操作,结果还是整数
<< >> >>>
2、<<:左移运算符,每移动一位,就相当于把数字扩大为原来的2倍,移动几位,就相当于乘以2的几次方
3、>>:右移运算符,每移动一位,就相当于把数字缩小了2倍,移动了几位,就相当于除以2的几次方
4、>>>:和右移一样,只不过只能操作正数
package Chating;
public class Shuzu {
public static void main(String[] args) {
int i = 10;
System.out.println(i << 1); // i * 2
System.out.println(i << 2); // i * 2 * 2
int j = 32;
System.out.println(j >> 1); // j / 2
System.out.println(j >> 2); // j / 2 / 2
int a = -8;
System.out.println(a >>> 2);
}
}
三元运算符
可以操作三个数据或者三个表达式
格式
表达式1 ? 表达式2 : 表达式3;
流程
1. 判断表达式1的布尔值返回类型
2. 如返回值为**true**,就把**表达式2**的值作为整个三元运算符表达式的结果
3. 如返回值为**false**,就把**表达式3**的值作为整个三元运算符表达式的结果
package Chating;
public class Shuzu {
public static void main(String[] args) {
int a = 4 < 3 ? 233 : 996;
//表达式 1 ? 表达式 2: 表达式3
System.out.println(a);//a = 996 因为4不大于3为false,所以返回的是表达式2(996)的结果
int b = 6 < 9 ? 666 : 512;
System.out.println(b);//b = 996 因为6小于9为true,所以返回的是表达式1(666)的结果
}
}