JavaSE:的数据类型与变量

哦哦哦,家人们咱开始了新的篇章----JAVA了哦 *★,°*:.☆( ̄▽ ̄)/$:*.°★* 。

接下来会不定期给大家分享我对JAVA知识的理解(C语言部分也会继续写哦!)

希望大家多多支持!!😊

目录

🥇1. 字面常量

🥇2. 数据类型 

🥇3. 变量

🥈3.1 变量概念 

🥈 3.2 整型变量

🥉3.2.1整型

🥉3.2.3长整型

 🥉3.2.4短整型

 🥉3.2.4字节型

 ❌错误及其更改代码分析 

❗重点示例及其分析

 🥈 3.3 浮点型变量

 🥉3.3.1单精度浮点型

  🥉3.3.2双精度浮点型

 🥈3.4字符型变量 

 🥈3.5布尔型变量

❌代码:

 🥈3.6类型转换

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

 🥉 3.6.1强制类型转换(显式)

 🥈3.7类型提升

类型提升小结 :

🥇4. 字符串类型


🥇1. 字面常量

HelloWorld 程序中, System.Out.println("Hello World") 语句,
不论程序何时运行,输出的都是 HelloWorld
其实 "Hello World" 就是字面常量。
常量即程序运行期间,固定不变的量称为常量 ,比如:一个礼拜七天,一年 12 个月等。
public class Demo{
    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);
    } 
}

输出的:100、3.14、‘A’、true/false都是常量,将其称为字面常量。

字面常量的分类:
1. 字符串常量: 由""括起来的,比如“12345”、“hello”、“你好”。
2. 整形常量: 程序中直接写的数字(注意没有小数点),比如:100、1000
3. 浮点数常量: 程序中直接写的小数,比如:3.14、0.49
4. 字符常量: 由 单引号 括起来的当个字符,比如:‘A’、‘1’
5. 布尔常量: 只有两种true和false
6. 空常量: null
注意: 字符串、整形、浮点型、字符型以及布尔型,在Java中都称为数据类型。

🥇2. 数据类型 

在C语言中我们有int,short,long,char等数据类型

在JAVA中同样也有,且于C语言类似

在Java中数据类型主要分为两类:基本数据类型引用数据类型
基本数据类型有四类八种:
1. 四类:整型、浮点型、字符型以及布尔型
2. 八种:
数据类型关键字内存占用范围
字节型byte1 字节-128~127
短整型short2 字节-32769~32767
整型int4 字节-2^31~2^31-1
长整型long8 字节-2^63~2^63-1
单精度浮点型float4 字节
有范围,一般不关注
双精度浮点型double8 字节
有范围,一般不关注
字符型char 2字节0~65535
布尔型boolean没有明确规定true和false

 而引用数据类型主要为:数组 String 类 接口等等

注意:
不论是在16位系统还是32位系统,int都占用4个字节,long都占8个字节
整形和浮点型都是带有符号的
整型默认为int型,浮点型默认为double
字符串属于引用类型

🥇3. 变量

🥈3.1 变量概念 

在程序中,除了有始终不变的常量外,有些内容可能会经常改变,比如:人的年龄、身高、
成绩分数、数学函数的计算结果等,对 于这些经常改变的内容,在 Java 程序中,称为变量
而数据类型就是用来定义不同种类变量的
变量就相当于是一个小箱子,这个箱子可以放东西,箱子有大有小

🥈 3.2 整型变量

定义变量的语法格式为:

             数据类型 变量名 = 初始值;  

🥉3.2.1整型

public class TestDemo {
    public static void main(String[] args) {
       int a = 10;
        System.out.println("最大值:"+Integer.MAX_VALUE);
        System.out.println("最大值:"+Integer.MIN_VALUE);

        /*int b;//err
        System.out.println(b);//err
*/
    }
}

代码输出结果:

最大值:2147483647
最大值:-2147483648

 整型:

1.大小:4个字节【可移植性强:不管是32位还是64位,int就是4个字节】

2.对于每一个基本数据类型而言,都会有一个包装类类型与其对应,在现阶段我们就可以将包装类理解为这个数据类型的一个plus版本。如int的包装类位:Integer

3.在JAVA里面,int没有所谓的无符号整数,所以int既能表示正数也能表示负数,所以最高位为符号位的话,int类型的数据表示的范围就为 -2^31 ---- 2^31 - 1

4 在给变量设置初始值时,值不能超过int的表示范围,否则会导致溢出

5,在Java当中,局部变量在使用时,必须初始化,不初始化不能编译通过

在C语言中不才不初始化的话是输出随机值,但是在Java里面不给局部变量初始化值,那么使用时就会直接报错,编译错误,无法运行!

且在Java里面,没有全局变量的说法,只是对于那些在类里面,方法外面的变量,我们称之为成员。

🥉3.2.3长整型

public class TestDemo {
    public static void main(String[] args) {
        long a = 10L;
        System.out.println(a);
        System.out.println("最大值:" + Long.MAX_VALUE);
        System.out.println("最大值:" + Long.MIN_VALUE);
    }
}

代码输出结果:

10
最大值:9223372036854775807
最大值:-9223372036854775808

1,长整型不论在那个系统下都占8个字节

2,在长整型变量定义的时候你要与普通的整形区分,所以后面要加L,这里最好是用大写,因为小写很容易弄混淆。

3,长整型的表示范围是 -2^63 ---- 2^63 - 1。

4,长整形对应的包装类类型是Long.

 🥉3.2.4短整型

public class TestDemo {
    public static void main(String[] args) {
        short sh = 19;
        System.out.println(sh);
        System.out.println("最大值:"+Short.MAX_VALUE);
        System.out.println("最小值:"+Short.MIN_VALUE);
    }
}

输出结果:

19
最大值:32767
最小值:-32768

 🥉3.2.4字节型

public class TestDemo {
    public static void main(String[] args) {
        byte a = 10;
        System.out.println(a);
        System.out.println("最大值:"+Byte.MAX_VALUE);
        System.out.println("最大值:"+Byte.MIN_VALUE);
    }
}

输出结果:

10
最大值:127
最大值:-128

 1. byte在任何系统下都占1个字节
2. byte的范围是:-2^7 ---- 2^7 - 1 :-128~127
3. 字节的包装类型为Byte

 ❌错误及其更改代码分析 

 1.

public class TestDemo {
    public static void main(String[] args) {
        byte a = 183;//报错:byte的取值范围为127~-128
    }
}

编译器会自动进行检查,你赋值的字面值常量是不是超出了当前数据类型能够表示的数据的范围,且其他数据类型都是这样的!!

2.

public class TestDemo {
    public static void main(String[] args) {
        byte b = 127;
        byte a = b+1;//报错:1默认为整型的
        
    }
}

在这里的a=b+1中的1被认为是一个整型,是4个字节的左边为1个字节类型,右边为4个字节类型,所以报错!

我们可以通过强制类型转换来使之正确

重点示例及其分析

public class TestDemo {
    public static void main(String[] args) {
        byte num = 127;
        byte snum = (byte)(num + 1);
        System.out.println(snum);
    }
}

就如同c语言中的char类型一般

 加1后发生整形提升,这个原理对于其他数据类型/语言也是一样的,我们可以将某一个类型的数据的范围看成是一个圆圈,+1后可以直接从正数最大直接跳到其负数最小。

 🥈 3.3 浮点型变量

 🥉3.3.1单精度浮点型

  对于浮点型的常量而言,有两种,单精度float与双精度double

public class TestDemo {
    public static void main(String[] args) {
        float f = 12.5f;//12.5默认是一个double类型的数据,而double是应该8字节类型,不能给float,float是应该4字节类型
        System.out.println(f);
    }
}

 运行结果:

12.5

float 类型在 Java 中占四个字节, 同样遵守 IEEE 754 标准. 由于表示的数据精度范围较小, 一般在工程上用到浮点数 都优先考虑 double, 不太推荐使用 flfloat. flfloat的包装类型为Float。
2
其包装类类型为Flost

  🥉3.3.2双精度浮点型

public class TestDemo {
    public static void main(String[] args) {
       
        double num1 = 1.1;
        System.out.println(num1);

        double num2 = num1*num1;
        System.out.println(num2);
    }
}

输出结果:

1.1
1.2100000000000002

1. double在任何系统下都占8个字节,float占四个字节。

2. 浮点数与整数在内存中的存储方式不同,不能单纯使用2^n 的形式来计算,Java中浮点型的存储也遵循IEEE 754的标准。

3. double的包装类型为Double,float的包装类型为Float。

4. 因为float,double 类型的内存布局遵守 IEEE 754 标准(和C语言一样), 尝试使用有限的内存空间表示可能无限的小数, 势必会存在一定的精度误差,因此浮点数是个近似值,并不是精确值。

 🥈3.4字符型变量 

public class TestDemo {
    public static void main(String[] args) {
        char c1 = 'A'; // 大写字母
        char c2 = '1'; // 数字字符
         System.out.println(c1);
         System.out.println(c2);
         // 注意:java中的字符可以存放整形
        char c3 = '帅'; System.out.println(c3);
        char ch = '呵'; System.out.println(ch);
    }
}

 运行结果:

A
1

注意事项:
1. Java 中使用 单引号 + 单个字母 的形式表示字符字面值.
2. 计算机中的字符本质上是一个整数. 在 C 语言中使用 ASCII 表示字符, 而 Java 中使用 Unicode 表示字符. 因此 一个字符占用两个字节, 表示的字符种类更多, 包括中文

 

特点:

1,char型是字符型,不属于整数类型

2,char型占2个字节,不能表示负数,所以字符对应的值的范围是0~2^16 - 1(65535)

3,因为字符型常量的范围是0~65535,范围很广,所以Java里面是使用Unicode字符集来进行对应的,相对于Ascii码字符集而言,Unicode包含Ascii码字符集,可以表示数字,英文字母,以及其他国家的字符等等。所以在这里我们可以直接将汉字赋值给一个字符型常量。(IDEA默认的编码格式是GBK,中文字符占两个字节)

4,char型的包装类是Character

注意:

除了char型的包装类是Character

        int类型的包装类是Integer

其余的都是首字母大写+其余字母!!

 🥈3.5布尔型变量

public class TestDemo {
    public static void main(String[] args) {
        boolean b = true;
        System.out.println(b);
        b = false; 
        System.out.println(b);
    }
}

 运行结果:

true
false

注意事项:
1. boolean 类型的变量只有两种取值, true 表示真, false 表示假.
2. Java 的 boolean 类型和 int 不能相互转换, 不存在 1 表示 true, 0 表示 false 这样的用法
3,boolean的包装类是Boolean。
4.boolean 类型非常特殊,jvm没有明确的大小

❌代码:

boolean value = true;
 System.out.println(value + 1);
// 代码编译会出现如下错误
Test . java : 4 : 错误 : 二元运算符 '+' 的操作数类型错误
System . out . println ( value + 1 );
^
第一个类型 : boolean
第二个类型 : int
1 个错误
他们之间就不是同种的数据类型,是无法相加/相减的!

 🥈3.6类型转换

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

public class TestDemo {
    public static void main(String[] args) {
        int a = 10;
        long b = 100L;;
        b = a;
    }
}

/***********************************************************************/
public class TestDemo {
    public static void main(String[] args) {
        float f = 3.14F;
        double d = 5.12; 
        d = f; // 编译器会将f转换为double,然后进行赋值 
        //f = d;// double表示数据范围大,直接将float交给double会有数据丢失,不安全
    }
}
自动类型转换即: 代码不需要经过任何处理,在代码编译时,编译器会自动进行处理 。特点: 数据范围小的转为数据范围大的时会自动进行
ab都是整形,a的范围小,b的范围大,当将a赋值给b时,编译器会自动将a提升为long类型,然后赋值
3
注意:数据范围小的转为数据范围大的时会自动进行,不能将数据范围大的赋值给数据类型小的!!

 🥉 3.6.1强制类型转换(显式

 

大家来想一想,为甚么这两个地方报错了

虽然两数都是4个字节,但是float能表示的数据的宽度,它除了可以表示整数也可以表示小数。所以编译器别让其给整数,如果给了整数小数部分将无处安放

 

这里涉及到了类型提升和强制类型转换:

所有小于4个字节的数据进行运算的时候,都会将其提升到4个字节,然后参与运算

 改为   byte c = (byte)(a+b);就行了

注意事项:
1. 不同数字类型的变量之间赋值, 表示范围更小的类型能隐式转换成范围较大的类型
2. 如果需要把范围大的类型赋值给范围小的, 需要强制类型转换, 但是可能精度丢失
3. 将一个字面值常量进行赋值的时候, Java 会自动针对数字范围进行检查 ,如其字面值没有超过其表示范围将不会报错!那就是说超过了就会报错!
4. 强制类型转换不一定能成功,不相干的类型不能互相转换

 🥈3.7类型提升

不同类型的数据之间相互运算时,数据类型小的会被提升到数据类型大的。
1. int long 之间: int 会被提升为 long

public class TestDemo {
    public static void main(String[] args) {
        int a = 10;
        long b = 20;
        //int c = a + b; // 编译出错: a + b==>int + long--> long + long 赋值给int时会丢失数据
        long d = a + b; // 编译成功:a + b==>int + long--->long + long 赋值给long
    }
}
a + b==>int + long--->long + long 赋值给long
2. byte byte 的运算
public class TestDemo {
    byte a = 10;
    byte b = 20; 
    byte c = a + b; 
    System.out.println(c);
}
// 编译报错
Test . java : 5 : 错误 : 不兼容的类型 : int 转换到 byte 可能会有损失
byte c = a + b ;
^

当两不一样的数据类型进行运算的时候,会把其中较小的数据类型转化为较大的进行运算

由于计算机的 CPU 通常是按照 4 个字节为单位从内存中读写数据. 为了硬件上实现方便, 诸如 byte 和 short这种低于 4 个字节的类型, 会先提升成 int, 再参与计算

类型提升小结

1. 不同类型的数据混合运算, 范围小的会提升成范围大的.
2. 对于 short, byte 这种比 4 个字节小的类型, 会先提升成 4 个字节的 int , 再运算.

🥇4. 字符串类型

要注意:

在C语言当中没有字符串类型

在Java当中有字符串类型

public class TestDemo {
    public static void main(String[] args) {
        String s1 = "hello";
        String s2 = " world";
        System.out.println(s1);
        System.out.println(s2);
        System.out.println(s1 + s2); // s1+s2表示:将s1和s2进行拼接 }
    }
}

运行结果:

hello
 world
hello world

1. int 转成 String

int num = 10; 
// 方法1 
String str1 = num + ""; 
// 方法2 
String str2 = String.valueOf(num);

 2. String 转成 int

String str = "100";
 int num = Integer.parseInt(str);
本篇对只是对字符串进行简单的介绍,大家能够正常使用即可,后序会详细给大家介绍。

 这里我们可以初步的对于字符串类型的一些功能有些认识。

但是在利用+号进行字符串的拼接的时候,要注意括号的问题,因为你要看你是想单个单个的结合,还是整体的进行结合,加不加括号的结果如上是不一样的。

+号在“”前方和后方的含义是完全不同的哦

public class TestDemo {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println("a+b="+a+b);
        System.out.println(a+b+"=a+b");
    }
}

运行结果:

a+b=1020
30=a+b

大家要看清楚在运用哦,这里如果把:"a+b="+(a+b);就是对的了

 Java初学者,如有错误请大家指出,不胜感激,如果觉得写的还不错的话可以点个小星星,给个关注我们一起进步!!!冲冲冲🏃‍♂️🏃‍♂️🏃‍♂️🏃‍♂️🏃‍♂️

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

豆腐乾净找方规

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值