【JAVA |数据类型】数据类型、类型提升、类型转换

✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨ 
🎈🎈作者主页: 🎈丠丠64-CSDN博客🎈


✨✨ 帅哥美女们,我们共同加油!一起进步!✨✨ 


目录

一、前言

二、字面常量

三、数据类型

四、变量

1.定义

2.变量的使用

3.中文乱码问题

4.布尔类型

5.字符串类型

五、类型转换

六、类型提


一、前言

之前我们学习了C语言,发现变量都是用着各种不同的数据类型进行存储分类,不同的数据需要使用的类型也不一样,JAVA语言中也是这样,但同时更加严谨


二、字面常量

常量即程序运行期间,固定不变的量称为常量
public class Test{
    public static void main(String[] args){

        System.out.println("hello world!")
        System.out.println(100);
        System.out.println(3.14)
        System.out.println(’A’);
        System.out.println(true)
        System.out.println(false)

    }
}

  • 双引号括起来的字符串被称为字符串常量
  • 整形被称为整形常量
  • 浮点型被称为浮点数常量
  • 单引号引起来的被称为字符常量
  • 只有两种true和false被称为布尔常量
  • null称为空常量

三、数据类型

Java 中数据类型主要分为两类: 基本数据类型 引用数据类型
下面的这8类就属于基本数据类型

与C语言中大差不差,但同时存在着不同:

  • 不论是在16位系统还是32位系统,int都占用4个字节,long都占8个字节
  • 整型默认为int型,浮点型默认为double
  • 使用long在数据后面加大写L,使用float在数据后面加小写f
  • 在JAVA中char占用2个字节

四、变量

1.定义

除了上述中有着常量不会改变的量,那么就同时有一直在改变的量,对于经常改变的量,对其称为变量,定义变量的语法格式为  数据类型 变量名 = 初始值

public class Test{
    public static void main(String[]args){

        int numl = 10;
        System.out.println(num1);

        int num2;
        num2 = 10;
        System.out.println(num2);
    }
}


2.变量的使用

JAVA语言中使用一个变量之前必须进行初始化

只定义不赋值,就会编译期间将会报错

int num3
System.out.println(num3);


在给其所定义的变量赋值,超过数据类型的表示范围,会导致溢出 编译时会报错

类似于这样,int范围为

int num4 =102645484548;

超出了int的最大范围


倘若呢,不知道一个数据类型为多大,JAVA中有一个概念叫做的包装类型,先了解个概念,这个类就可以知道一个类型的范围为多少

基本类型二进制位数包装器类
boolean1Boolean
byte8Byte
char16Character
short32Short
int32Integer
long64Long
float32Float
double64Double

 我们拿int举例子哈

System.out.println(Integer.MIN VALUE)
System.out.println(Integer.MAX VALUE)

结果为 

 其他的数据类型都是一样的,给大家列举一下

        //整形
        int num1 = 10;
        System.out.println(num1);
        System.out.println(Integer.MIN_VALUE);
        System.out.println(Integer.MAX_VALUE);

        //长整型
        long num2 = 10L;
        System.out.println(num2);
        System.out.println(Long.MIN_VALUE);
        System.out.println(Long.MAX_VALUE);

        //短整形
        short num3 = 10;
        System.out.println(num3);
        System.out.println(Short.MIN_VALUE);
        System.out.println(Short.MAX_VALUE);

        //字节型
        byte num4 = 10;
        System.out.println(num4);
        System.out.println(Byte.MIN_VALUE);
        System.out.println(Byte.MAX_VALUE);

        //双精度浮点型
        double num5 = 10;
        System.out.println(num5);
        System.out.println(Double.MIN_VALUE);
        System.out.println(Double.MAX_VALUE);

        //单精度浮点型
        float num6 = 10f;
        System.out.println(num6);
        System.out.println(Float.MIN_VALUE);
        System.out.println(Float.MAX_VALUE);

        //字符型
        char num7 = 'A';  //大写字母
        char num8 = '你'; //汉字
        System.out.println(num7);
        System.out.println(num8);
        System.out.println(Float.MIN_VALUE);
        System.out.println(Float.MAX_VALUE);

       

3.中文乱码问题

 对于字符型变量所定义的汉字,Java 中使用 Unicode 表示字符可能在某些编译运行的时候会出现乱码,这是为什么呢?

Test.java:3: 错误 : 未结束的字符文字
char ch = ' ?';

只需要们在执行 javac 时加上 -encoding UTF-8 选项即可

javac -encoding UTF-8 Test.java

我们记事本所使用的编码是UTF-8,而cmd在运行编码的时候解码用的是GBK,在编译运行时解码跟编码用的不一样,就会出现不能识别的情况,所以我们要给解码用编码相同UTF-8,而在IDEA中编码解码都是在同一程序中运行,就不会存在这个问题了


4.布尔类型

接下来还有一种变量叫做布尔型变量

 //布尔型
        boolean num9 = true;
        System.out.println(num9);
        System.out.println(Float.MIN_VALUE);
        System.out.println(Float.MAX_VALUE); //范围大小未知

在C语言中,零代表假,非零代表真,但是在JAVA中,判断真假,只能用true和false

布尔类型不可以和其他的任何类型之间进行相互转换,这是不被允许的

boolean value = true;
System.out.println(value + 1);
// 代码编译会出现如下错误
Test.java:4: 错误: 二元运算符 '+' 的操作数类型错误
System.out.println(value + 1);
^
第一个类型: boolean
第二个类型: int

Java虚拟机规范中,并没有明确规定boolean占几个字节,也没有专门用来处理boolean的字节码指令,所以它的范围大小是不确定的        


5.字符串类型

在c语言中字符串并没有一个统一的类型,而是以字符数组的方式存储,但在JAVA中字符串也有着数据类型,字符串型就属于引用数据类型

String sl="hello"
String s2=" world"
System.out.println(s1),
System.out.println(s2);
System.out.println(s1+s2);//s1+s2表示:将s1和s2进行拼摄

 当特定情况下我们需要将字符串与整形相互转换,有两种方法实现:第一种将整形与字符串合并成为一个字符串;第二种就是用类包装来实现。

//整形转字符串
int num = 10;
// 方法1
String str1 = num + ""; 
// 方法2
String str2 = String.valueOf(num);

//字符串转整形
String str = "100";
int num = Integer.parseInt(str);

在整形与字符串合并过程中得注意合并顺序,合并顺序不同结果也不同

int a = 10.
int b = 20:
System.out.println(a + b + "");
System.out.println(a + ""+ b),

 a+b这是两个整形相加,再加双引号,30变成了一个字符串

a+双引号,a实现为一个字符串,然后+b,相当于字符串+b,1020还是一个字符串


五、类型转换

Java 作为一个强类型编程语言 , 当不同类型之间的变量相互赋值的时候 , 会有教严格的校验
int n= 10;
long m= 100L;

m = n;  //可以通过编译

n=m     //编译失败

数据范围小的转为数据范围大的时会自动进行,而大数据转化为小数据的时候则会报错,如果硬要转换就要进行强制类型转换(会丢失数据)

int n= 10,
long m= 100L;

n = (int)m;
将一个字面值常量进行赋值的时候 , Java 会自动针对数字范围进行检查,赋值不能超过其数据类型的范围

六、类型提升

不同类型的数据混合运算 , 范围小的会提升成范围大的, 对于 short, byte 这种比 4 个字节小的类型 , 会先提升成 4 个字节的 int , 再运算
nt al = 10;
long b2 = 20;
int c = a1 + b2;//报错

long d= al + b;

 

int+long 在运算的时候会转换为 long + long ,结果得拿long类型接受,否则会丢失数据


希望对你有用

  • 24
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值