其他分享
首页 > 其他分享> > day04_基本数据类型丶变量丶类型转换

day04_基本数据类型丶变量丶类型转换

作者:互联网

前置知识

计算机世界中只有二进制。那么在计算机中存储和运算的所有数据都要转为二进制。包括数字、字符、图片、声音、视频等。

进制

进制也就是进位计数制,是人为定义的带进位的计数方法 。不同的进制可以按照一定的规则进行转换。

进制的分类

在Java代码中如何表示四种进制的值

public class Demo1 {
    /*
        十进制:Java中,数值默认都是10进制,不需要加任何修饰。
        二进制:数值前面以0b开头,b大小写都可以。
        八进制:数值前面以0开头。
        十六进制:数值前面以0x开头,x大小写都可以。

        注意: 书写的时候, 虽然加入了进制的标识, 但打印在控制台展示的都是十进制数据.
     */
    public static void main(String[] args) {
        // 十进制:正常表示
        System.out.println(10);//10

        //二进制:0b或0B开头
        System.out.println(0B10);//2
        
        //十六进制:0x或0X开头
        System.out.println(0x10);//16

        //八进制:0开头 
        System.out.println(010);//8
    }
}

计算机如何存储运算数据

计算机中的数据,都是以二进制补码的形式在存储和运算,而补码则是通过反码和原码推算出来的。

Java中如何存储字符

在计算机的内部都是二进制的0、1数据,如何让计算机可以直接识别人类文字的问题呢?就产生出了编码表的概念。编码表 :就是将人类的文字和一个十进制数进行对应起来组成一张表格。例如:

​​

总结:

例如:

public class Demo {
    public static void main(String[] args) {
        //字符类型变量
        char c = 'a';
        int i = 1;
        //字符类型和int类型计算
        System.out.println(c + i);//98
    }
}

​数据类型

前置知识:


数据类型分类

Java是一种强类型语言,针对每种数据都给出了明确的数据类型 。Java的数据类型分为两大类:

​今天我们重点学习的是基本数据类型,关于引用数据类型,后面我们会重点学习。

那为什么会有不同的数据类型呢?

在这里,我们给出每种基本数据类型的内存占用和取值范围,大家了解一下:

注意事项:

变量

字面量就是数据/数值,只有“字面量”机制的话,是远远不够的,因为只有字面量内存是无法重复利用的。使用变量之后,内存空间就得到了复用。所谓变量:可变化的量。它的意思是变量中存储的数据不是一成不变的,是可以被改变的, 假设变量 i 中之前存储的数据是 10,我们可以将 10 换成 100,变量就是这个意思。声明变量的实质就是申请内存空间。变量的作用用来存储数据,代表内存的一块存储区域,这块内存中的值是可以改变的。根据变量名进行使用,可以输出,也可以修改值。变量定义的格式包括三个要素:

变量的声明和赋值

public class Demo01Variable {
    public static void main(String[] args) {
        /*
            变量的定义格式
                数据类型 变量名称;
                变量名称 = 数据值;
        */
        byte a;//声明了一个byte类型(1个字节)的变量,给变量名称叫做a

        //把数字66存储到byte类型的变量a中
        a = 66;

        //打印变量a中保存的数据
        System.out.println(a);// 66

        //把数字88存储到byte类型的变量a中,原有的数据66将被替换
        a = 88;

        //打印变量a中保存的数据
        System.out.println(a);// 88
        
    }
}

还可以在同一行声明多个同一种数据类型的变量,中间使用逗号隔开。但不建议使用这种方式,降低程序的可读性。

public class Demo02Variable {
    public static void main(String[] args) {
        /*
            变量的定义格式
                数据类型 变量名称1,变量名称2,变量名称3;
                变量名称1 = 数据值1;
                变量名称2 = 数据值2;
                变量名称3 = 数据值3;
          */
        //声明了三个int类型(4个字节)的变量,给每个变量分别起名为c,d,e
        int c, d, e;

        //给c,d,e 变量分别赋值
        c = 200;
        d = 300;
        e = 500;

        //打印各种变量中保存的数据
        System.out.println(c);//200
        System.out.println(d);//300
        System.out.println(e);//500
    }
}
public class Demo03Variable {
    public static void main(String[] args) {
        /*
            变量的定义格式二:
                数据类型 变量名称 = 数据值;
        */

        //声明了一个short类型(2个字节)的变量,变量名称为b,同时给b赋值为100
        short b = 100;
        
        System.out.println(b);// 100
    }
}

也可以在同一行声明多个同一种数据类型的变量,中间使用逗号隔开。但不建议使用这种方式,降低程序的可读性。

public class Demo04Variable {
    public static void main(String[] args) {
        /*
        变量的定义格式
                数据类型 变量名称1 = 数据值1,变量名称2 = 数据值2,变量名称3 =数据值3 ;
        */
        //声明3个long类型的变量f,g,h,并且同时各自赋值
        long f = 600L,g = 700L,h = 800L;

        //打印long类型(8个字节)的变量中保存的内容
        System.out.println(f);  //600
        System.out.println(g);  //700
        System.out.println(h);  //800
    }
}

变量定义的注意事项:

代码示例

public class Demo04Variable {
    public static void main(String[] args) {
        /*
        1. 变量名不允许重复定义
        */
        int a = 10;
        // int a = 20;  错误代码,重复定义变量名
        a = 20;
        System.out.println(a);

        /*
        3. 变量在使用之前一定要进行赋值
        */
        int i;
        //System.out.println(i);错误

        /*
        4. 定义float和long变量的注意事项
                定义float类型变量的使用: 需要在数值的后面加入F的标识,F可以大写也可以小写.但是, 建议大写
                定义long类型变量的使用 : 需要在数值的后面加入L的标识,L可以大写也可以小写.但是, 建议大写
        */
        float f = 12.3F;
        long l = 1000L;
        System.out.println(f);
        System.out.println(l);

        /*
        5. 变量的作用域范围
                变量的作用域 : 只在它所在的大括号中有效
        */
        {
            int x = 20;
            // 当这个大括号中的代码执行完毕后, 内部所[定义]的变量就会丛内存中消失
            System.out.println(x);
        }

        //System.out.println(x); 错误:变量的作用域 : 只在它所在的大括号中有效
    }
}

数据类型转换

Java程序中要求参与的运算的数据,必须要保证数据类型的一致性,如果数据类型不一致将发生类型的转换。boolean类型不参与数据类型转换。

自动类型转换

下列情况就会发生自动类型转换

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

byte b = 127; //右边的整数常量值必须在-128~127范围内
//byte bigB = 130;错误,右边的整数常量值超过byte范围
long num = 1234567; //右边的整数常量值如果在int范围呢,编译和运行都可以通过,这里涉及到数据类型转换
long bigNum = 12345678912L;//右边的整数常量值如果超过int范围,必须加L,否则编译不通过
int i = 1;
byte b = 1;
double d = 1.0;

double sum = i + b + d;//混合运算,升级为double
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 

强制类型转换

特点:

下列情况就会发生强制类型转换

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

public class Demo02Convert {
    public static void main(String[] args) {
        short s = 1;
        /*
            s是short类型,1是int类型,运算时类型不一致,会发生自动类型转换
            short类型(2个字节)的s会自动转换成int类型
            最终变成了两个int数据相加,结果是int类型
            不能直接赋值给左侧的short类型的变量s
            但是在赋值之前把int类型的结果,强制转换成short类型(砍掉左侧的2个字节的内容),

        */
        s = (short) (s + 1);
        System.out.println(s);

        double d = 9.999;
        int i = (int) d;//精度损失
        System.out.println(i);//9

        int a = 8888;
        byte b = (byte) a;//数据溢出
        System.out.println(b);//-72

    }

}

当某个值想要提升数据类型时,也可以使用强制类型转换。提示:这个情况的强制类型转换是没有风险的。

int i = 1;
int j = 2;
double shang = (double)i/j;

基本数据类型之间是存在固定的转换规则的,无论是哪个程序, 将这 6 个规则套用进去,问题迎刃而解:

  1. 八种基本数据类型中,除 boolean 类型不能转换,剩下七种类型之间都可以进行转换;
  2. 如果整数型字面量没有超出 byte,short,char 的取值范围,可以直接将其赋值给 byte,short,char 类型的变量;
  3. 小容量向大容量转换称为自动类型转换,容量从小到大的排序为:byte < short(char) < int < long < float < double,其中 short 和 char 都占用两个字节,但是 char 可以表示更大 的正整数;
  4. 大容量转换成小容量,称为强制类型转换,编写时必须添加“强制类型转换符”,但运行时可能出现精度损失,谨慎使用;
  5. byte,short,char 类型混合运算时,先各自转换成 int 类型再做运算;
  6. 多种数据类型混合运算,各自先转换成容量最大的那一种再做运算;

 

标签:类型转换,变量,int,数据类型,System,day04,println,out
来源: https://www.cnblogs.com/wurengen/p/16410691.html