Java_Basis -- 2. 数据类型 + 运算符

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语言中数据类型有两大类,即基本数据类型和引用数据类型,基本数据类型可简化为四类八种
Java_Basis -- 2. 数据类型 + 运算符_第1张图片

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类型再去做运算。
Java_Basis -- 2. 数据类型 + 运算符_第2张图片

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) " " 就做字符串与另一边的连接运算。

你可能感兴趣的:(java)