java数据类型

Java基础语法


变量和表达式

程序中的变量用于存储诸如数字和字母这样的数据。它们可以被认为是一种容器,变量中的数字、字母以及其他数据项称为变量的值。

在程序中使用某个变量之前,必须陈述每一个变量的一些基本信息。需要知道变量的名称、要为该变量保留多少计算机内存、变量中的数据项如何编码为一串的0和1。

变量声明告诉计算机保存什么类型的数据。由于不同类型的数据以不同的方式保存在计算机中,计算机必须知道变量的类型,从而知道如何在计算机内存中存储和提取变量的值。

变量声明示例:

int a,b,c;

变量声明组成:类型名称、一系列变量名称、各名称之间用逗号隔开,最后分号结束变量的声明。


数据类型

数据类型指定一组值以及其操作。java语言是一个强调数据类型的语言,在声明任何变量时,必须将该变量定义为一种数据类型。

java拥有两种主要的数据类型:类类型和基本类型。

数据类型

类类型是一种用于类的对象的数据类型。基本类型是一个不可分解的值。

java的基本数据类型:

byte用一个字节来表示整数值

拥有十进制、二进制、八进制,但无论采用哪种形式,输出控制台上,系统都会将其自动转换为十进制。

public class Byte {
    public static void main(String[] args) {
        byte x = 22; //十进制
        byte y =022 ; //八进制
        byte z = 0x22 ;//十六进制
        //输出相应的值
        System.out.println("x= " + x);
        System.out.println("y = " + y);
        System.out.println("z =  " + z);
    }
}

运行效果:

run:
x= 22
y = 18
z =  34
成功构建 (总时间: 0 秒)

短整型

程序:

public class Short {
    public static void main(String[] args) {
        short x = 22; //十进制
        short y =022 ; //八进制
        short z = 0x22 ;//十六进制
        //输出相应的值
        System.out.println("x= " + x);
        System.out.println("y = " + y);
        System.out.println("z =  " + z);
    }
}

运行效果:

run:
x= 22
y = 18
z =  34
成功构建 (总时间: 0 秒)

后面的与之类似,其中long类型需要在数据后面添加L标志,float类型需要添加F标志。

在java中可以方便地取得数据类型的最大值和最小值。如取得int数据类型范围的最大值:Integer.MAX_VALUE; 取得int数据类型的最小值:Integer.MIN_VALUE。

数据的极限操作:

public class DataOperator {
    public static void main(String[] args) {
        int max = Integer.MAX_VALUE;     //最大值
        int min = Integer.MIN_VALUE;     //最小值
        System.out.println(max);
        System.out.println(min);
        //数据溢出:最大值 + 1 = 最小值
        System.out.println(max+1);
        System.out.println(max+2);
        //数据溢出: 最小值 - 1 = 最大值
        System.out.println(min-1);
    }
}

程序运行结果:

run:
2147483647
-2147483648
-2147483648
-2147483647
2147483647
成功构建 (总时间: 0 秒)

解决数据溢出的主要方法可以通过扩大数据范围来完成。比int大的范围是long。

public class DataOperator1 {
    public static void main(String[] args) {
        int max = Integer.MAX_VALUE;     //最大值
        int min = Integer.MIN_VALUE;     //最小值
        System.out.println(max);
        System.out.println(min);
        //数据溢出:最大值 + 1 = 最小值
        System.out.println(max+1L);
        System.out.println(max+2);
        //数据溢出: 最小值 - 1 = 最大值
        System.out.println(min-(long)1);
    }
}

结果:

run:
2147483647
-2147483648
2147483648
-2147483647
-2147483649
成功构建 (总时间: 0 秒)

本程序中将每一个操作中一个int类型数据转变为了long型数据,这样程序在处理的时候就会发生数据的转型,最终变为了对long型数据进行数学操作,从而可以很好地解决数据溢出的问题。

而在java中,各个基本数据类型的转型操作流程为:

  • 范围小和范围大的两种数据操作,范围小的数据类型会自动变为范围大的数据类型,如 int + long = long。
  • 如果要把范围大的数据类型转变为数据类型小的数据,则必须强制类型转换,如 int = (int)long。

问题:如果要强制转换的数据类型的数据大于接收类型会怎样?如int类型转换成byte类型,此时int变量保存的数据值已经大于byte的数据范围(-128~127)了,则byte的内容会是多少?

答案依然会存在数据溢出。简单的验证:

public class TestIntToByte {
    public static void main(String[] args) {
        int x = 200;
        byte b = (byte)x;   //强制类型转换
        System.out.println(b);

    }
}

结果:

run:
-56
成功构建 (总时间: 0 秒)

在开发中如果给出了两个整型数据进行除法计算,会出现结果不正确的情况。如:

public class IntChuInt {
    public static void main(String[] args) {
        System.out.println(9/2);
    }
}

结果为:

run:
4

这是因为计算的都是两个整型数据,所以计算结果还是int,而int不包含小数位,小数位如果存在则直接取消,想要得出正确结果的话只需将其中一个数据转换成double或float型。

字符型(char)

java中使用单引号''定义的内容表示一个字符,使用char来完成定义字符类型。另外在java语言中char和int之间是可以相互转换的。

  • 大写字母范围:65-90
  • 小写字母范围:97-122
    大小写字母之间差了32

定义字符并完成与int完成转换。

public class IntToChar {
    public static void main(String[] args) {
        char c = 'A';      //定义一个字符
        int x = c;          //char转换成int
        x += 32;            //大写字母转为小写字母
        char temp = (char) x;    //int 类型强制转换成char
        System.out.println(temp);
    }
}

结果为:
run:
a

问题:char型变量中能否保存一个中文汉字?为什么

能够存储一个中文,因为java中以Unicode编码,一个char占16个字节,所以可以保存一个中文。

布尔型(boolean)

布尔型主要表示的是一种逻辑判断,对布尔型数据只有两种取值:true和false。

在许多语言中,布尔型也使用0或非0来表示,但在java中并无此概念

字符串(String)

java中使用String可以定义字符串变量,但String属于一个类(引用型数据),字符串是使用双引号定义的一串数据。

**任何数据类型遇到String变量的“+”操作都会自动变为String型数据。

运算符

java中的语句有很多形式,表达式就是其中一种,表达式由操作数和运算符组成。

java运算符:

运算符

运算符的优先级:

三目运算符:

格式: 数据类型 变量 = 布尔表达式?满足条件的内容:不满足条件设置的内容;

范例:将两个int型中数据大的数值赋给变量

public class maxSanMu {
    public static void main(String[] args) {
        int x = 10;
        int y = 20;
        int result = x>y?x:y;
        System.out.println(result);
    }
}

结果:
run:
20

逻辑运算符

逻辑运算一共包含三种:与、或、非

“与”操作要求所有的判断条件都满足,在多个判断条件中,如果有一个条件不满足,那么不需要向后判断,结果一定是false。

“或”操作,若干条件一起判断,其中只要一个范围true,结果就是true,只有都返回false结果才为false。

位运算符

位运算在java中有:&、^、~、>>、<<、>>>,而所有的位运算都是采用二进制数据进行操作的。

posted @ 2018-03-22 22:04  绝世近代  阅读(409)  评论(1编辑  收藏  举报