• Java基础之识数据类型


    数据类型分类

    Java的数据类型分为两大类:

    • 基本数据类型:包括 整数浮点数字符布尔

    • 引用数据类型:包括 数组接口

    基本数据类型


    备注

    long类型:建议数据后加L表示。
    float类型:建议数据后加F表示。
    char类型:使用单引号''
    String类型:使用双引号""
    

     单字符类型

    char:字符类型 ;例如:'A','0','尚'
    占内存:2个字节
    Java中使用的字符集:Unicode编码集  

    布尔类型

    boolean:只能存储true或false

    虽然计算机底层使用0和1表示false和true,但是在代码中不能给boolean类型的变量赋值0和1,只能赋值false和true

    编码表

    编码表 :就是将人类的文字和一个十进制数进行对应起来组成一张表格

     ‘A’ 对应10进制就是65,对应2进制0100 0001,机器看2进制,人看十进制

    它仅仅是一个字符映射集
    Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
    同一 Unicode 值可以被编码成不同的二进制表示,以便在存储和网络上传输。Unicode的实现:UTF-8、UTF-16、UTF-32、UCS-2等
    UTF8编码中,英文字符占用一个字节;绝大多数汉字占用三个字节,个别汉字占用四个字节。
    gbk就是2个字节

    java中变量

    变量:在程序执行的过程中,其值可以发生改变的量

    变量的作用:用来存储数据,代表内存的一块存储区域,这块内存中的值是可以改变的

    变量三要素

    1、数据类型

    2、变量名

    3、值

    变量使用注意事项

    1、先声明后使用
    2、在使用之前必须初始化
    3、变量有作用域
    4、在同一个作用域中不能重名  

    print &println的区别

    换行输出语句:输出内容,完毕后进行换行,格式如下:

    System.out.println(输出内容);
    

    直接输出语句:输出内容,完毕后不做任何处理,格式如下

    System.out.print(输出内容);  

    注意事项

    ​换行输出语句,括号内可以什么都不写,只做换行处理
    ​直接输出语句,括号内什么都不写的话,编译报错
    ​如果()中有多项内容,那么必须使用 + 连接起来
    如果某些内容想要原样输出,就用""引起来,而要输出变量中的内容,则不要把变量名用""引起来  

     进制

    请分别用四种类型的进制来表示10,并输出它的结果:(了解)

    (1)十进制:正常表示;数字组成:0-9
    System.out.println(10);
    
    (2)二进制:0b或0B开头;数字组成:0-1
    System.out.println(0B10);
    
    (3)八进制:0开头;数字组成:0-7
    System.out.println(010);
    
    (4)十六进制:0x或0X开头;数字组成:0-9,a~f(或A~F)
    System.out.println(0X10);
    
    • 字节(Byte):是计算机信息技术用于计量存储容量的一种计量单位,通常情况下一字节等于有八位, 也表示一些计算机编程语言中的数据类型和语言字符。

    • 位(bit):是数据存储的最小单位。也就是二进制。二进制数系统中,每个0或1就是一个位,叫做bit(比特),其中8 bit 就称为一个字节(Byte)。

    数据类型byte 范围-127~128 占字节1个,当定义130时就要用short 2字节,16位(00000000 00000000)
    

    基本数据类型转换

    自动类型转换和强制类型转换。  

    自动类型转换(隐式类型转换)

    取值范围小的类型自动提升为取值范围大的类型 

    (1)当把存储范围小的值(常量值、变量的值、表达式计算的结果值)赋值给了存储范围大的变量时,

    int i = 'A';//char自动升级为int
    double d = 10;//int自动升级为double
    

    (2)当存储范围小的数据类型与存储范围大的数据类型一起混合运算时,会按照其中最大的类型运算  

    int i = 1;
    byte b = 1;
    double d = 1.0;
    
    double sum = i + b + d;//混合运算,升级为double
    

    (3)当byte,short,char数据类型进行算术运算时,按照int类型处理  

    byte b1 = 1;
    byte b2 = 2;
    byte b3 = b1 + b2;//编译报错,b1 + b2自动升级为int
    
    char c1 = '0';
    char c2 = 'A';
    System.out.println(c1 + c2);//113 
    

    (4)boolean类型不参与  ,

    基本数据类型转换(boolean不参与转化并且和String无关)

    String和基本数据类型之间的转化,后面讲(String、包装类)

    2、强制类型转换(显示类型转换)

    1.5 赋值到int 类型变量会发生什么?产生编译失败,肯定无法赋值。

    int i = 3.14; // 错误。只有通过强制类型转换,将`double` 类型强制转换成`int` 类型才能赋值
    

    强制类型转换:将取值范围大的类型强制转换成取值范围小的类型  

    自动转换是Java自动执行的,而强制转换需要我们自己手动执行
    

    转换格式:

    数据类型 变量名 = (数据类型)被强转数据值;
    

    (1)当把存储范围大的值(常量值、变量的值、表达式计算的结果值)赋值给了存储范围小的变量时,需要强制类型转换,提示:有风险,可能会损失精度或溢出  

    int i = (int)3.14;//强制类型转换,损失精度
    
    double d = 1.2;
    int num = (int)d;//损失精度
    
    int i = 200;
    byte b = (byte)i;//溢出,b值改变
    

    (2)boolean类型不参与  

    (3)当某个值想要提升数据类型时,也可以使用强制类型转换  

    int i = 1;
    int j = 2;
    double shang = (double)i/j;
    提示:这个情况的强制类型转换是没有风险的
    

    特殊的数据类型转换

    1、任意数据类型的数据与String类型进行“+”运算时,结果一定是String类型

    System.out.println("" + 1 + 2);//12
    System.out.println(num + "这个四位数个位上的数字是:" + ge);

    2、但是String类型不能通过强制类型()转换,转为其他的类型  

    String str = "123";
    int num = (int)str;//错误的
    int num = Integer.parseInt(str);//后面才能讲到,借助包装类的方法才能转
    

    运算符(Operator)

    分类运算符
    算术运算符 +-*/%++--
    赋值运算符 =+=-=*=/=%=
    关系运算符 >>=<<===!=
    逻辑运算符 &|^!&&||
    三元运算符 (关系表达式)?结果1:结果2;
    位运算符(了解) &|~^<<>>>>>

    算术运算符

    算术运算符符号解释
    + 加法运算,字符串连接运算,正号
    - 减法运算,负号
    * 乘法运算
    / 除法运算
    % 求余运算,两个数字相除的余数
    ++-- 自增自减运算
    public class OperatorDemo01 {
    	public static void main(String[] args) {
    		int a = 3;
    		int b = 4;
    		
    		System.out.println(a + b);// 7
    		System.out.println(a - b);// -1
    		System.out.println(a * b);// 12
    		System.out.println(a / b);// 计算机结果是0,为什么不是0.75呢?
    		System.out.println(a % b);// 3
    	}
    }

    整型数据之间的/
    取商数
    有浮点型数据参与/
    获得的就是准确的结果(如果除不尽,会自动保留小数), ;有浮点数/ 就需要用浮点数数据类型接收,想用int就要强制类型转换

    “+”号的两种用法

    • 第一种:对于+两边都是数值的话,+就是加法的意思

    • 第二种:对于+两边至少有一边是字符串得话,+就是拼接的意思

    public class OperatorDemo02 {
    	public static void main(String[] args) {
    		// 字符串类型的变量基本使用
    		// 数据类型 变量名称 = 数据值;
    		String str1 = "Hello";
    		System.out.println(str1); // Hello
    		
    		System.out.println("Hello" + "World"); // HelloWorld
    		
    		String str2 = "Java";
    		// String + int --> String
    		System.out.println(str2 + 520); // Java520
    		// String + int + int
    		// String		+ int
    		// String
    		System.out.println(str2 + 5 + 20); // Java520
    	}
    }
    

    自加自减运算(I++,++i)

    ++i  ,先自加,后使用;
    1.先自增,在赋值给++i整体
    i++,先使用,后自加。 
    先赋值给i++整体,在自增

    自加自减的例子

     int i = 0;
     int i = i++;
     // 赋值,等号右边的计算结果给左边
     //i++不是原子性操作
     //i = i++; // _tmp = 0; i = 1; i = _tmp = 0
    

      

    赋值运算符

    赋值运算符符号解释
    = 将符号右边的值,赋值给左边的变量
    += 将符号左边的值右边的值进行相加操作,最后将结果赋值给左边的变量
    -= 将符号左边的值右边的值进行相减操作,最后将结果赋值给左边的变量
    *= 将符号左边的值右边的值进行相乘操作,最后将结果赋值给左边的变量
    /= 将符号左边的值右边的值进行相除操作,最后将结果赋值给左边的变量
    %= 将符号左边的值右边的值进行取余操作,最后将结果赋值给左边的变量
    		short s = 3;
    		// s = s + 4; 代码编译报错,因为将int类型的结果赋值给short类型的变量s时,可能损失精度
    		s += 4; // 代码没有报错
            //因为在得到int类型的结果后,JVM自动完成一步强制类型转换,将int类型强转成short
    备注s=s+4,4默认是int
    

    关系运算符比较运算符,是两个数据之间进行比较的运算,运算结果一定是boolean值true或者false

    关系运算符符号解释
    < 比较符号左边的数据是否小于右边的数据,如果小于结果是true。
    > 比较符号左边的数据是否大于右边的数据,如果大于结果是true。
    <= 比较符号左边的数据是否小于或者等于右边的数据,如果大于结果是false。
    >= 比较符号左边的数据是否大于或者等于右边的数据,如果小于结果是false。
    == 比较符号两边数据是否相等,相等结果是true。
    != 不等于符号 ,如果符号两边的数据不相等,结果是true。

    逻辑运算符:是用来连接两个布尔类型结果的运算符(!除外),运算结果一定是boolean值true或者false

    逻辑运算符符号解释符号特点
    & 与,且 falsefalse
    | truetrue
    ^ 异或 相同为false,不同为true
    ! falsetrue,非truefalse
    && 双与,短路与 左边为false,则右边就不看
    || 双或,短路或 左边为true,则右边就不看

    &&和&区别,||和|区别

    • &&&区别:

      • &&&结果一样,&&有短路效果,左边为false,右边不执行;&左边无论是什么,右边都会执行。

    • |||区别:

      • |||结果一样,||有短路效果,左边为true,右边不执行;|左边无论是什么,右边都会执行。

    三元运算符(三目运算符)

    数据类型 变量名 = 关系表达式?结果1:结果2
    

    三元运算符计算方式:

    • 条件判断的结果是true,三元运算符整体结果为结果1,赋值给变量。

    • 判断条件的结果是false,三元运算符整体结果为结果2,赋值给变量。

    public static void main(String[] args) {
        int i = (1==2 ? 100 : 200);
        System.out.println(i);//200
        int j = (3<=4 ? 500 : 600);
        System.out.println(j);//500
    }
    

    位运算符

    位运算符符号解释
    & 按位与,当两位相同时为1时才返回1
    | 按位或,只要有一位为1即可返回1
    ~ 按位非,将操作数的每个位(包括符号位)全部取反
    ^ 按位异或。当两位相同时返回0,不同时返回1
    << 左移运算符
    >> 右移运算符
    >>> 无符号右移运算符
    左移:<<
    
    ​	运算规则:左移几位就相当于乘以2的几次方
    
    右移:>>
    
    ​	运算规则:右移几位就相当于除以2的几次方
    

      

    本文为原创文章,转载请标明出处
  • 相关阅读:
    Docker(12)- docker run 命令详解
    adb 常用命令大全(7)- 其他实用功能
    adb 常用命令大全(6)- 模拟按键输入
    adb 常用命令大全(5)- 日志相关
    adb 常用命令大全(4)- 应用管理
    adb 常用命令大全(3)- 查看手机设备信息
    adb 常用命令大全(2)- 基础命令
    adb 常用命令大全(1)- 汇总
    Docker
    Docker(11)- docker ps 命令详解
  • 原文地址:https://www.cnblogs.com/harden13/p/14453942.html
Copyright © 2020-2023  润新知