1 标识符
简而言之,标识符就是在编程的时候使用到的名字,用于给变量,常量,函数,语句块等命名,命名也要严格遵守以下规则:
1.标识符可以由且由字母,数字,下划线(_),美符($)。
2.标识符不能以数字开头。
3.标识符严格区分大小写,大小写不同,标识的对象也不同 。
4.优雅的标识符是应该见名知意的,能反应出其作用的。
2 关键字
在Java语言中有特殊意义的单词,一共有53个,其中包含两个保留字const和goto,关键字在Java语言以及其他语言中一般是不能够被用作标识符使用的。
1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|
char | class | continue | default | do | double |
else | extends | false | final | finally | float |
for | if | implements | import | instanceof | int |
interface | long | native | new | null | package |
private | protected | public | return | short | static |
super | switch | synchronized | this | throw | throws |
transient | true | try | void | volatile | while |
abstract | boolean | break | byte | case | catch |
3 变量
Java语言中的变量指的是可以变化的,具有存储空间抽象的意义,简单来讲就是用来申请内存存储值的。变量的表示结构为:变量类型 变量名 变量值
int age = 100;
String name = "MTingCat"
3.1 变量的命名
1.变量名唯一,不能重复
2.变量名不能使用java语言关键字
3.变量名必须是一个有效的标识符
4.变量名也要遵循驼峰命名法
3.2 变量的初始化
1.在声明的同时初始化: int age = 20;
2.先声明再初始:int age; age = 20;
注意事项:变量在初始化之前必须先声明,变量在使用之前必须先初始化才能使用(局部变量),数据类型必须匹配。
3.3 变量的访问
在变量中存储数据,可以对其进行赋值,更改等操作,并且变量的操作必须和数据类型相匹配。
3.4 变量的作用域
从变量的声明开始到定义它最近的括号而结束,并且重叠的作用域内不允许出现变量重复命名。
4 数据类型
在Java语言中数据类型有两大类,即基本数据类型和引用数据类型,基本数据类型可简化为四类八种
byte | short | int | long | char | float | double | boolean | |
---|---|---|---|---|---|---|---|---|
字节数 | 1 | 2 | 4 | 8 | 2 | 4 | 8 | |
范围 | -128-127 | -2^15~2^15-1 | -2^31-2^31-1 | -2^63-2^63-1 | 0~65535 | -3.410^38-3.410^38 | -1.710^308-1.710^308 | |
默认值 | 0 | 0 | 0 | 0l或0L | u0000 '' 空 | 0.0f或0.0F | 0.0d | false |
存在包 | java.lang | java.lang | java.lang | java.lang | java.lang | java.lang | java.lang | java.lang |
4.1 基本类型
4.1.1 整型
4.1.1.1 byte
1.字节:1个字节
2.范围:-128~127
3.默认值:(byte)0
4.1.1.2 short
1.字节:2个字节
2.范围:-32768~32767
3.默认值:(short)0
4.1.1.3 int
1.字节:4个字节
2.范围:-2^31-2^31-1
3.默认值:0
4.1.1.4 long
1.字节:8个字节
2.范围:-2^63-2^63-1
3.默认值:0l或0L
4.1.1.5 注意事项
1.整型超出范围后会发生溢出,正数过大变负数,负数过小变正数。
2.整数相除,会舍弃小数部分(不是四舍五入)结果还是整数。
4.1.2 浮点型
4.1.2.1 float
1.字节:4个字节
2.范围:-3.410^38-3.410^38
3.默认值:0.0f或0.0F
4.1.2.2 double
1.字节:8个字节
2.范围:-1.710^308-1.710^308
3.默认值:0.0d
4.1.2.3 注意事项
如果我们需要精确计算浮点数优先选择double,想要更加精确的浮点数计算可以选择BigDecimal类来实现。
4.1.3 字符型
4.1.3.1 char
1.字节:2个字节
2.范围:0-65535,字符‘ ’采用Unicode的字符编码,16进制的写法。
3.默认值:u0000 '' 空
4.1.3.2 注意事项
一个char只能存储一个字符。
4.1.4 布尔型
4.1.4.1 boolean
1.字节:1个字节
2.取值:只允许取值 true或false
3.默认值:false
4.1.5 测试代码
package com.mtingcat.javabasis.datetype;
/**
* 本类是用来测试各个数据类型的大小的类
* @author MTing
*
*/
public class testDateType {
public static void main(String[] args) {
/**
* 整型
*/
System.out.println("========Byte==========");
System.out.println("字节数:" + Byte.BYTES);
System.out.println("位数:" +Byte.SIZE);
System.out.println("最小值:" + Byte.MIN_VALUE);
System.out.println("最大值:" + Byte.MAX_VALUE+"\n");
System.out.println("========short==========");
System.out.println("字节数:" + Short.BYTES);
System.out.println("位数:" + Short.SIZE);
System.out.println("最小值:" + Short.MIN_VALUE);
System.out.println("最大值:" + Short.MAX_VALUE+"\n");
System.out.println("========Integer==========");
System.out.println("字节数:" + Integer.BYTES);
System.out.println("位数:" + Integer.SIZE);
System.out.println("最小值:" + Integer.MIN_VALUE);
System.out.println("最大值:" + Integer.MAX_VALUE+"\n");
System.out.println("========Long==========");
System.out.println("字节数:" + Long.BYTES);
System.out.println("位数:" + Long.SIZE);
System.out.println("最小值:" + Long.MIN_VALUE);
System.out.println("最大值:" + Long.MAX_VALUE+"\n");
/**
* 浮点型
*/
System.out.println("========Float==========");
System.out.println("字节数:" + Float.BYTES);
System.out.println("位数:" + Float.SIZE);
System.out.println("最小值:" + Float.MIN_VALUE);
System.out.println("最大值:" + Float.MAX_VALUE+"\n");
System.out.println("========Double==========");
System.out.println("字节数:" + Double.BYTES);
System.out.println("位数:" + Double.SIZE);
System.out.println("最小值:" + Double.MIN_VALUE);
System.out.println("最大值:" + Double.MAX_VALUE+"\n");
/**
* 字符型
*/
System.out.println("========Character==========");
System.out.println("字节数:" + Character.BYTES);
System.out.println("位数:" + Character.SIZE+"\n");
/**
* 布尔类型
*/
System.out.println("========Character==========");
System.out.println("值:" + Boolean.FALSE);
System.out.println("值:" + Boolean.TRUE);
}
}
4.2 引用数据类型
除了以上四类八种之外其他的都是引用数据类型,默认值是null,引用类型是一个对象类型,它的值指向空间地址的引用,即地址,所指向的内存中保存着变量所表示的一个值或一组值。
4.4 数据类型之间的转换
数据类型之间的转化根据字面意思是把不同的数据进行转换,但是其底层本质是数据存储空间大小的变换,涉及数据精度的增减。
4.4.1 自动类型转化(隐式类型转换)
1即小类型到大类型的转化,可以直接赋值
*byte--short--int--long--float--double
char--*
4.4.2 强制类型转换
1.强制类型转换时,大类型的值强制转换为小的数据类型,如果大的数据类型的值超出小类型的范围,那么会发生溢出现象,应该避免强制造成的溢出问题。
2.byte、short、char在做运算时会先转换为int类型再去做运算。
4.4.3 测试代码
package com.mtingcat.javabasis.datetype;
public class testDateTypeChanged {
byte b;
short s;
int i;
long l;
float f;
double d;
double d1 = f;
float f1 = l;
long l1 = i;
int i1 = s;
short s1 = b;
byte b1 = (byte)s;
short s2 = (short)i;
int i2 = (int)l;
long l2 = (long)f;
float f2 = (float)d;
}
5 运算符
5.1 算数运算符
内容:+,-,*,/,%,++,--
1.整数相除得整数,小数部分舍去 例:3/2=1
2.%:取余(取模) 余数为0时--整除
3.++:自增1
4.--:自减1
System.out.println("=======算数运算符========");
int a = 10;
int b = 9;
System.out.println("a="+a);
System.out.println("b="+b);
System.out.println("a + b = "+(a+b));
System.out.println("a - b = "+(a-b));
System.out.println("a * b = "+(a*b));
System.out.println("a / b = "+(a/b));
System.out.println("a % b = "+(a%b));
System.out.println("++a = "+(++a));
System.out.println("a++ = "+(a++));
System.out.println("--b = "+(--b));
System.out.println("b-- = "+(b--));
5.2 关系运算符
内容:<,> ,<=,>=,==,!=
关系运算符的结果是布尔类型,即非false则true
System.out.println("=======关系运算符========");
System.out.println("a="+a);
System.out.println("b="+b);
System.out.println("a>b\t"+(a>b));
System.out.println("a=b\t"+(a>=b));
System.out.println("a<=b\t"+(a<=b));
System.out.println("a==b\t"+(a==b));
System.out.println("a!=b\t"+(a!=b));
5.3 逻辑运算符
内容:&&,||,!,&,|,^
1.建立在关系运算符的基础之上,运算的结果也是boolean型
2.&&:短路与,一假则假全真则真,当&&左边为false时会发生短路。
3.||:短路或,一真则真全假则假,当||左边为true时会发生短路。
4.&非短路与 和 |非短路或 运算的结果和&& ||是一样的,但是不会有短路现象,所以产生的结果可能不一样。
5.!:非 非真则假 非假则真
6.^: (逻辑异或)全假为假,一真为真
A | B | A&&B | AllB | !A | A&B | AlB | A^B |
---|---|---|---|---|---|---|---|
true | true | true | true | false | true | true | false |
true | false | false | true | false | false | true | true |
false | true | false | true | true | false | true | true |
false | false | false | false | true | false | false | false |
System.out.println("=======逻辑运算符========");
boolean A = true;
boolean B = false;
System.out.println("A\t"+A);
System.out.println("B\t"+B);
System.out.println("A&&B\t"+(A&&B));
System.out.println("A||B\t"+(A||B));
System.out.println("!B\t"+(!B));
System.out.println("A&B\t"+(A&B));
System.out.println("A|B\t"+(A|B));
System.out.println("A^B\t"+(A^B));
5.4 三元运算符
也叫三目运算符
boolean?a:b
System.out.println("=======三目运算符========");
System.out.println("A\t"+A);
System.out.println("B\t"+B);
System.out.println("A?1:2\t"+(A?1:2));
System.out.println("B?1:2\t"+(B?1:2));
5.5 位运算符
内容:&,|,~,^,>>,>>>,<<,
1.& | ~ ^表示的值是布尔类型的true或者false
2.>>和>>>是把数据对应的二进制补码向右移动,高位填高位和高位填零的操作
3.<<表示把数据二进制补码向左移动,低位填零的操作
符号 | 含义 |
---|---|
a>>3 | 带符号右移符,a向右移动三位,如果是正数,在高位补0,如果是负数,在高位补1 |
a>>>3 | 无符号右移符,a向右移动三位,无论正负都在高位补0 |
a<<3 | 左移符,a向左移动三位,低位补0 |
System.out.println("=======位运算符========");
int c = 8;
int d = 1;
int f = -1;
System.out.println("c&d\t"+(c&d));
System.out.println("c|d\t"+(c|d));
System.out.println("~c\t"+(~c));
System.out.println("~d\t"+(~d));
System.out.println("c^d\t"+(c^d));
System.out.println("f>>3\t"+(f>>3));
System.out.println("f>>>3\t"+(f>>>3));
System.out.println("c<<3\t"+(c<<3));
5.6 赋值运算符
内容:=,+=,-= ,*=,/=
优先级最低
System.out.println("=======赋值运算符========");
int v = 1;
int t = 10;
System.out.println("v="+v);
System.out.println("t="+t);
System.out.println("v+=t\t"+(v+=t));
System.out.println("v-=t\t"+(v-=t));
System.out.println("v*=t\t"+(v*=t));
System.out.println("v/=t\t"+(v/=t));
5.7 字符连接运算符
内容:+
1.若+两边为基本数据类型 ,做加法运算。
2.若一边为字符串(String) " " 就做字符串与另一边的连接运算。