java编程数据类型全面详解教程新手必入

编辑: admin 分类: java 发布时间: 2021-12-03 来源:互联网
目录
  • 前言
  • 变量和类型
    • 1 整形int
    • 2 长整形long
    • 3 双精度浮点型(重点)
    • 4 单精度浮点型
    • 5 字符型
    • 6 字节类型
    • 7 短整型
    • 8 布尔类型
    • 9 字符串类型(重点)
    • 10 变量的作用域
    • 11 变量的命名规则
      • 硬性指标:
      • 软性指标:
    • 12 常量
      • 13 强制类型转换
        • 14 理解数值提升
          • 15 int和String类型的相互转换
          • 总结

            前言

            大家好呀!这是笔者的java板块,今天起笔者开始了java部分的相关学习,会不定期更新java的文章。
            提示:以下是本篇文章正文内容,下面案例可供参考

            变量和类型

            变量指的是程序运行时可变的量,相当于开辟一块内存空间来保存一些数据。
            类型则是对变量的种类进行了划分,不同的类型的变量具有不同的特性。
            我们讨论的“变量”和我们的“内存”这样的硬件设施密切相关

            在这里插入图片描述

            (图片来自比特就业课)

            变量相当于一个箱子,可以存放一些数据
            类型相当于箱子的种类,不同类型,意味着箱子种类不一样,种类不一样,箱子存储的东西自然是不一样的

            1 整形int

            public class TestDemo {
                public static void main(String[] args) {
                 int a=10;
                    System.out.println(a);//打印10
                    System.out.println(Integer.MAX_VALUE);//打印2147483647,Integer是java的一个包装类,是一个简单类型,你可以理解Integer就是int
                    System.out.println(Integer.MIN_VALUE);//打印-2147483648
                 //和c语言一样,整形int不管你系统是16位、32位还是64位,int类型统一占4字节
                    //区别c语言,java里的整形int是没有无符号类型的,数字统一都有符号
                    //int是4字节,也就是32比特位,32位中的最高位是符号位(1为负,0为正)
                    //除去32位中的符号位剩余的31位分别对应1和0两种情况,所以最大是2^31-1=2147483647
                    //ps:为什么2^31要-1,因为符号位是0的2^31种情况中有0这种情况,正数要-1
                    //最小的是-2^31=-2147483648
                    //变量的命名:小驼峰->由数字、字母、下划线、美元符号组成
                    int 钱=100;//有意思的是java可以用中文来做变量名
                    System.out.println(钱);//打印100,不会报错
                }
            }
            

            在这里插入图片描述

            整形数据范围示意图

            2 长整形long

            数据范围这里和上面整形思路一样,long是8个字节,64比特位,最高位符号位,所以最大值2^ 63-1, 最小值-2^63

            public static void main(String[] args) {
                    long a=10;//ps:写long a=10L或者long a=10l(小写的L)结果都是一样的
                    System.out.println(a);//打印10
                    System.out.println(Long.MAX_VALUE);//打印2^63-1=9223372036854775807
                    System.out.println(Long.MIN_VALUE);//打印-2^63=-9223372036854775808
                }
            

            注意:java中没有long long类型

            3 双精度浮点型(重点)

            double类型占8个字节

            public static void main(String[] args) {
                    double d=3.1415926;//double是8个字节
                    System.out.println(d);//打印3.1415926
                    int a=1;
                    int b=2;
                    System.out.println(a/b);//打印0,java中int除int还是int型,如果要得到小数必须除数或被除数至少有一个是double型
                    int c=1;
                    double f=2;
                    System.out.println(c/f);//打印0.5
                }
            

            4 单精度浮点型

            float类型占4个字节

            public static void main(String[] args) {
                    //float a=1.1;
                    // 1.1java默认是一个double类型,对于c语言来说double型到float型是可以通过的,只是会报警告
                    //但对于java来说只要类型不匹配,就不能运行,一定会报错
                    float a=1.1f;//要想1.1是float类型,后面要跟一个f或者F
                }

            5 字符型

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

            public static void main(String[] args) {
                    char ch='a';
                    System.out.println(ch);//打印a
                    char dh='嘿';//一个汉字2个字节,char是2个字节,所以这里也是可以赋值的
                    System.out.println(dh);//打印“嘿”
                    char eh=97;
                    System.out.println(eh);//打印a,赋值是整数给char类型的话,会自动转换为数字对应的字符
                }
            

            6 字节类型

            byte类型占1个字节(联想c语言中的char)

            public static void main(String[] args) {
                    byte b=10;
                    System.out.println(b);//这里正常打印10
                    //byte c=130;//这里会报错
                    //为什么10可以130就不可以呢?
                    //byte是1个字节,8比特位,除去符号位只有7比特位
                    //7比特位最高是127,最低是-128
                    //所以byte类型的范围是-128-127
                }
            

            在java中,数值类型都是有取值范围的,存储数据的时候,不要超过范围,否则编译无法通过。

            7 短整型

            short类型占2个字节

            public static void main(String[] args) {
                    short s=10;//short类型的取值范围是-2^16到2^16-1
                    System.out.println(s);//打印10
                }
            

            8 布尔类型

            public static void main(String[] args) {
                    boolean flg1=true;//非0为真,0为假
                    System.out.println(flg1);//java中布尔类型只有两种情况:true或false
                    boolean flg2=false;
                    System.out.println(flg2);
                    //JVM没有明确规范布尔类型的大小。有些书说1bit有些书说1字节
                    //布尔类型不能进行数值运算,比如flag+1这种都是不行的
                }
            

            注意:
            1.boolean类型的变量只有两种取值,true为真,false为假
            2.java的boolean类型和int不能相互转换,不存在 1表示true,0表示false
            3.boolean类型有些JVM的实现是占1个字节,有些是占1个比特位,这个没有明确规定。

            9 字符串类型(重点)

            把一下字符放到一起构成字符串
            String 变量名=“初始值”

            public static void main(String[] args) {
                    String str="hello";
                    System.out.println(str);
                    String str2="world";
                    System.out.println(str+str2);//可以把两个字符串拼接起来
                    System.out.println(str+10+20);//其他数据类型与字符串类型使用+拼接,结构是一个字符串
                    //打印hello1020,10跟着hello已经变成字符串了,所以不会与20相加
                    System.out.println(10+30+str);
                    //打印40hello,解释:因为计算机读这段代码是从左到右,两int型还没变成字符串算起来是40
                    System.out.println(str+(10+20));//如果要打印hello30,加个括号即可
                    System.out.println("a="+10+",b="+20);//a=10,b=20
                    String s1="\"bit\"";//现在要打印”bit“,只要对两边的双引号转义即可
                    System.out.println(s1);
                }
            

            10 变量的作用域

            也就是该变量能生效的范围,一般是变量定义所在的代码块,也就是大括号{}

            public static void main(String[] args) {
                    int a=10;
                    {
                        a=99;
                    }
                    System.out.println(a);//打印99
                    {
                        int b;
                    }
                    //System.out.println(b);//无法打印b,已经出了b的作用域
                }
            

            11 变量的命名规则

            硬性指标:

            1.一个变量名只能包含数字、字母、下划线
            2.数字不能作为开头
            3.变量名是大小写敏感的,举例说明:num和Num是两个不同的变量
            ps:语法上虽然运行使用中文/美元符号($)命名,但是强烈不推荐这样做

            软性指标:

            1.变量命名要具有描述性,见名知意
            2.变量名不宜使用拼音
            3.变量名的词性推荐使用名词
            4.变量命名推荐小驼峰命名法,当一个变量名由多个单词构成时,除了第一个单词之外,其他首字母大写
            比如maxValue

            12 常量

            常量:
            1.字面值常量:比如单纯一个数字,或者字符串等等
            2.final修饰的变量会变成常量

            ps:常量和变量的简单区别:
            常量就是程序运行时不可改变的量
            变量就是程序运行时可以改变的量

            public static void main(String[] args) {
                    final int c=10;//final修改的变量就不能修改了,类似c语言中的const
                    //c=2;//c不可修改,该句c=2会报错
                    System.out.println(c);
                }
            

            13 强制类型转换

            public static void main(String[] args) {
                    int a=10;//int是4字节
                    long b=a;//long是8字节
                    System.out.println(b);//4字节赋给8字节没有问题
                    long c=12;
                    //int d=c;//8字节赋给4字节会报错
                    int d=(int)c;//强制类型转换后才能赋值
                    boolean e=true;
                    //int f=(int)e;//两个毫不相关的类型就算是强转也不能赋值
            
                }
            

            long表示的范围更大,可以将int赋值给long,但是不能将long赋值给int。就好比我们现在把西瓜和芝麻里面掏空,你可以把空芝麻放到空西瓜里,但是不能把西瓜塞到芝麻里,如果你非要塞,好,请你把西瓜切的和芝麻一样大,也就是把long强制转换成int

            结论:不同数字类型的变量之间赋值,表示范围更小的类型能隐式转换成范围更大的类型

            注意:int和boolean这种完全不相干的类型,即使强制类型转换也是不能赋值的(boolean根本表示数值类型)

            14 理解数值提升

            public static void main(String[] args) {
                    byte a=1;//byte是1个字节,也就是4bit位,那它的有效范围应该是-128-127
                    byte b=2;
                    //byte c=a+b;这里会报错:小于4字节运算时会把变量自动提升到整形,整形后赋给byte是不可以的
                    byte c=(byte)(a+b);//要赋值a+b要对他们的结果强制类型转换
                    byte d=1+2;//这里为什么不报错呢?1和2都是常量,程序编译的时候1+2就已经编译成3了
                    //也就是说上一行代码==byte d=3;
                    int a1=10;
                    long a2=20;
                    //int a3=a1+a2;这里运算时,小类型会提升为大类型,这里a1会提升到long类型,直接写会报错
                    int a3=(int)(a1+a2);//必须对结果进行强转
                    String e=String.valueOf(a1);//把int型转换为String类型
                    System.out.println(e);
                    //整数变字符串法二
                    String f=a1+"";//整数加字符串就变字符串了
                    System.out.println(f);
                }
            

            15 int和String类型的相互转换

            public static void main(String[] args) {
                    int a1=10;
                    String e=String.valueOf(a1);//把int型转换为String类型
                    System.out.println(e);//打印字符10
                    //整数变字符串法二
                    String f=a1+"";//整数加字符串就变字符串了
                    System.out.println(f);
                }
            

            总结

            在这里插入图片描述

            本文介绍了java的所有数据类型,强制类型转换和数值提升是本文的重点,但在实际运用中,我们还是推荐减少不同类型混用的情况,防止出错。以上,祝读者学习愉快,事业有成,希望大家以后多多支持自由互联!

            【原URL http://www.yidunidc.com/mggfzq.html 请说明出处】