Java中的数据类型

Java是一种强类型语言,每个变量都必须声明其类型,而Java的数据类型可以分为两大类:基本类型和引用类型。

1、强弱类型语言

Java是一种强类型语言,那么什么是强类型语言呢?

强类型语言也称为强类型定义语言。要求变量的使用要严格符合规定,所有变量都必须定义后才能使用,而且变量的类型虽然可以改变但是不能够随意改变。

  Java、.NET、C++等都是强制类型定义的。也就是说,一旦一个变量被指定了某个数据类型,如果 不经过转换,那么它就永远是这个数据类型了。

  安全性高,运行效率相对较慢,鱼和熊掌不可兼得!强类型定义语言在速度上可能略逊色于弱类型定义 语言,但是强类型定义语言带来的严谨性能够有效的避免许多错误。

那么弱类型语言就是与强类型语言相对反的,像vb,php等就属于弱类型语言。

  在VBScript中,可以将字符串‘12’和整数3进行连接得到字符串‘123’,也可以把它看成整数123,而不需 要显示转换。是不是十分的随便,我们Java就不是这样的。

  但其实它们的类型没有改变,VB只是在判断出一个表达式含有不同类型的变量之后,自动在这些变 量前加了一个clong()或(int)()这样的转换函数而已。能做到这一点其实是归功于VB的编译器的 智能化而已,这并非是VB语言本身的长处或短处。

至此,对强弱类型语言也有了一个大概的了解。

2、数据类型

java的数据类型分为两大类:基本类型(primitive type)和引用类型 (reference type)

因为引用数据类型涉及到一些类和对象的知识,所有后续会有更详细的介绍,这里会稍微介绍一点。

 

 如果你看到这一堆头疼的话,没关系,不用记,JDK中类型对应的包装类都帮忙写好了,我们需要时候可 以直接看到!可以把以下代码拷贝进行查看结果:

public static void main(String[] args) {
    // byte
    System.out.println("基本类型:byte 二进制位数:" + Byte.SIZE);
    System.out.println("包装类:java.lang.Byte");
    System.out.println("最小值:Byte.MIN_VALUE=" +             Byte.MIN_VALUE);
    System.out.println("最大值:Byte.MAX_VALUE=" +     Byte.MAX_VALUE);
    System.out.println();
    // short
    System.out.println("基本类型:short 二进制位数:" + Short.SIZE);
    System.out.println("包装类:java.lang.Short");
    System.out.println("最小值:Short.MIN_VALUE=" + Short.MIN_VALUE);
    System.out.println("最大值:Short.MAX_VALUE=" + Short.MAX_VALUE);
    System.out.println();
    // int
    System.out.println("基本类型:int 二进制位数:" + Integer.SIZE);
    System.out.println("包装类:java.lang.Integer");
    System.out.println("最小值:Integer.MIN_VALUE=" + Integer.MIN_VALUE);
    System.out.println("最大值:Integer.MAX_VALUE=" + Integer.MAX_VALUE);
    System.out.println();
    // long
    System.out.println("基本类型:long 二进制位数:" + Long.SIZE);
    System.out.println("包装类:java.lang.Long");
    System.out.println("最小值:Long.MIN_VALUE=" + Long.MIN_VALUE);
    System.out.println("最大值:Long.MAX_VALUE=" + Long.MAX_VALUE);
    System.out.println();
    // float
    System.out.println("基本类型:float 二进制位数:" + Float.SIZE);
    System.out.println("包装类:java.lang.Float");
    System.out.println("最小值:Float.MIN_VALUE=" + Float.MIN_VALUE);
    System.out.println("最大值:Float.MAX_VALUE=" + Float.MAX_VALUE);
    System.out.println();
    // double
    System.out.println("基本类型:double 二进制位数:" + Double.SIZE);
    System.out.println("包装类:java.lang.Double");
    System.out.println("最小值:Double.MIN_VALUE=" + Double.MIN_VALUE);
    System.out.println("最大值:Double.MAX_VALUE=" + Double.MAX_VALUE);
    System.out.println();
    // char
    System.out.println("基本类型:char 二进制位数:" + Character.SIZE);
    System.out.println("包装类:java.lang.Character");
    // 以数值形式而不是字符形式将Character.MIN_VALUE输出到控制台
    System.out.println("最小值:Character.MIN_VALUE="
+ (int) Character.MIN_VALUE);
    // 以数值形式而不是字符形式将Character.MAX_VALUE输出到控制台
    System.out.println("最大值:Character.MAX_VALUE="
+ (int) Character.MAX_VALUE);
}

可能有些朋友对字节还不是很理解,那么我们来了解一下:

位(bit):是计算机 内部数据 储存的最小单位,11001100是一个八位二进制数。
字节(byte):是计算机中 数据处理 的基本单位,习惯上用大写 B 来表示,
1B(byte,字节)= 8bit(位)
字符:是指计算机中使用的字母、数字、字和符号
ASCIIS码:
1个英文字母(不分大小写)= 1个字节的空间
1个中文汉字 = 2个字节的空间
1个ASCII码 = 一个字节
UTF-8编码:
1个英文字符 = 1个字节
英文标点 = 1个字节
1个中文(含繁体) = 3个字节
中文标点 = 3个字节
Unicode编码:
1个英文字符 = 2个字节
英文标点 = 2个字节
1个中文(含繁体) = 2个字节
中文标点 = 2个字节
1bit表示1位,

1Byte表示一个字节 1B=8b。
1024B=1KB
1024KB=1M
1024M=1G.

同时稍微了解一下电脑32位和64位的区别:

32位操作系统只可以使用32位的cpu,而64位的CPU既可以安装32位操作系统也可以安装64位操作
系统。
寻址能力简单点说就是支持的内存大小能力,64位系统最多可以支达128 GB的内存,而32位系统最
多只可以支持4G内存。
32位操作系统只可以安装使用32位架构设计的软件,而64位的CPU既可以安装使用32位软件也可以
安装使用64位软件。
现在的电脑都是64位了!

关于基本数据类型,我们还可以自己写一些代码来看一下测试一下:

public static void main(String[] args) {
    //整型
    int i1=100;
    //长整型
    long i2=998877665544332211L;
    //短整型
    short i3=235;
    //浮点型
    double d1=3.5; //双精度
    double d2=3;
    float f1=(float)3.5; //单精度
    float f2=3.5f; //单精度
    //布尔类型 boolean true真/false假
    boolean isPass=true;
    boolean isOk=false;
    boolean isBig=5>8;
    if(isPass){
        System.out.println("通过了");
    }else{
        System.out.println("未通过");
    }
    //单字符
    char f='女';
    char m='男';
}        

写到这里这篇博客的篇幅已经很长了,后续的知识,会在后续的博客中继续聊

原文地址:https://www.cnblogs.com/koss/p/14434314.html