JAVA的内建类型

数据类型是现代计算机语言中最基本的抽象元素,其定义是:一组值及其定义在其上的操作。如数据类型16位无符号数,可以定义为0到65535及施加于其上的加法和减法操作。

 

JAVA中共有8种内建数据类型,绝大部分都和数字有关,这里介绍常用的类型,对JAVA的基本类型及操作有个感性认知。

 

整形(int),表示-2的31次方到2的31次方-1之间的整数。应该是现实中最常用到的数学概念。如果你觉得范围还不够,长整形(long)提供了64位的长度。其他还有byte和short两个整形类型。

int a, b, c;  //声明名字为a,b,c的类型为int的变量
a = 1234;     //a赋值为1234
b = 99;       //b赋值为99
c = a + b;    //c的值为a和b的加法运算结果

 

声明在计算机语言中,只是告诉编译器这有一个符号,可以先认为他存在。直到定义的时候,它才真正在在内存占据一席之地。上例中,程序运行到到赋值操作以后,才会在内存中为a,b,c分配32或者64个bit的内存,在这之前,内存不存在他们的实体。整形的操作见下面的程序。

 

# java IntOps 1234 99
public class IntOps {     
    public static void main(String[] args) {        
        int a = Integer.parseInt(args[0]);        
        int b = Integer.parseInt(args[1]);        
        int sum  = a + b;        
        int prod = a * b;        
        int quot = a / b;        
        int rem  = a % b;        
        System.out.println(a + " + " + b + " = " + sum);        
        System.out.println(a + " * " + b + " = " + prod);        
        System.out.println(a + " / " + b + " = " + quot);       
        System.out.println(a + " % " + b + " = " + rem);        
        System.out.println(a + " = " + quot + " * " + 
                            b + " + " + rem);    
     }
 }

 

 

字符(char)类型表示一个字符,包括字母和数字。

String是指一组有序的字符。更常用是String类型,见下面的例子

String a, b, c;  //声明名字为a,b,c的类型为String的变量
a = "Hello,";   //a赋值为 Hello,
b = " Bob";     //b赋值为 空格Bob
c = a + b;      //c赋值为a和b的连接操作

 

实数,双精度浮点数(double),内部的表示方法是科学记数法,下面的例子演示了double的相关操作,其中Math是JAVA中的一个库,定义了很多数学操作。除了双精度,还有单精度,float类型。

 

想要查看JAVA中每一个类型的取值范围,可以写一个下面的程序。
到底用那种类型呢?当然是根据需求了,如果你无法预测,就不要预测了,用一个现在看来够用的就可以了。做一个刚刚好的系统并在未来的需求变化下快速重构,才是目前大型软件工程的不二法门。

/*
The Max value of int: 2147483647
The Min value of int: -2147483648
The Max value of long: 9223372036854775807
The Min value of long: -9223372036854775808
The Max value of float: 3.4028235E38
The Min value of float: 1.4E-45
The Max value of double: 1.7976931348623157E308
The Min value of double: 4.9E-324
*/

 



public class OutputMaxMin {

    public static void main(String[] args) {

        System.out.println("The Max value of int: " + Integer.MAX_VALUE);  
        System.out.println("The Min value of int: " + Integer.MIN_VALUE); 
        System.out.println("The Max value of long: " + Long.MAX_VALUE); 
        System.out.println("The Min value of long: " + Long.MIN_VALUE); 
        System.out.println("The Max value of float: " + Float.MAX_VALUE); 
        System.out.println("The Min value of float: " + Float.MIN_VALUE); 
        System.out.println("The Max value of double: " + Double.MAX_VALUE); 
        System.out.println("The Min value of double: " + Double.MIN_VALUE); 

    }

}

 



布尔值(booleans),布尔值取值范围就两个值,真(true)或假(false)。其运算包括与,或,非。
可以结合基本的比较运算来看一下布尔值的运用。 

 

操作意义truefalse
== 是否相等,相等为真 2 == 2 3 == 2
!= 是否不等,不等为真 3 != 2 2 != 2
< 是否小于,小于为真 2 < 13 2 < 2
<= 是否小于等于,小等于为真 2 <= 2 3 <= 2
> 是否大于,大于为真 13 > 2 2 > 13
>= 是否大于等于,大于等于为真 3 >= 2 2 >= 3

 

 

 

 

 

 

 

 

为什么只有这几种内建数据类型呢,为什么不多一点呢?为什么不少一点呢?

 

每一种计算机语言是人设计的,自然就有他的目标。没有完美的产品,只有完成你目标的合适的产品。就像一辆汽车,没有操控,油耗,空间,外形都满分的汽车,只能根据目标来设计一辆或操控好,或空间大,或中庸的汽车。语言也是一样,一提到网络爬虫,首先想到Python,一提到网页设计,可能首先想到PHP。对于JAVA来说,其最初的设计目标之一是简单的,面向对象的,熟悉的。支持面向对象就是你可以使用JAVA实现自己的数据类型。简单就是内存管理等等一系列细节JAVA都帮你封装好了,而熟悉,应该就是跟C语言等当时的常用语言看起来差不多。所以提供最基本的,和C语言相似的基本类型,以便构造自己的数据类型就可以了,如果你想要更多的,自己可以构造。

 

抽象

 

回到最初说的抽象,可以说是软件工程师的基本能力。什么是抽象,就是忽略细节,抓取本质。在数据类型这个抽象中,你不需要时时都去关心int类型变量在计算机中如何表示,符号位是否是1,加法运算如何在CPU中完成,你只需要关心它的本质,有符号数及其数学运算。



 

本人水平有限,但是欢迎指正交流。

如果你觉得有点意思,欢迎关注 悟空的小车库。

 

posted @ 2016-07-12 09:16  悟空救我啊  阅读(840)  评论(0编辑  收藏  举报