Java 基本数据类型

java 的两大数据类型

  • 内置数据类型
  • 引用数据类型

1. 内置数据类型

Java 语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。
基本数据类型

  • 整数的默认类型是 int。

  • 定义 long 数据时,必须加后缀l或L。

  • 在定义 float 类型时必须在数字后面跟上 F 或者 f。

  • byte、int、long、和short都可以用十进制、16进制以及8进制的方式来表示。当使用常量的时候,前缀0表示8进制,而前缀0x代表16进制。

  • 自动转换按从低到高的顺序转换。不同类型数据间的优先关系如下:

低--------------------------------------------->高

byte->short->char-> int -> long -> float -> double

  • 合法转换


虚箭头表示可能会损失精度。

  • 强制转换的格式是在需要转型的数据前加上“( )”,然后在括号内加入需要转化的数据类型。Math.round()可以将浮点数舍入到最接近的整数,不过其返回值为long类型。

  • 基本数据类型中,布尔类型boolean占有一个字节,由于其本身所代码的特殊含义,boolean类型与其他基本类型不能进行类型的转换(既不能进行自动类型的提升,也不能强制类型转换), 否则,将编译出错。

byte:

  • byte数据类型是8位、有符号的,以二进制补码表示的整数(四个整数型之一);
  • 最小值是-128(-2^7);
  • 最大值是127(2^7-1);
  • 默认值是0;
  • byte类型用在大型数组中节约空间,主要代替整数,因为byte变量占用的空间只有int类型的四分之一
  • 例子:byte a = 100,byte b = -50。

boolean:

  • boolean数据类型表示一位的信息;
  • 只有两个取值:true和false;
  • 这种类型只作为一种标志来记录true/false情况;
  • 默认值是false;
  • 例子:boolean one = true。

对于数值类型的基本类型的取值范围,我们无需强制去记忆,因为它们的值都已经以常量的形式定义在对应的包装类中了。如:

public class PrimitiveTypeTest{
   public static void main(String[] args){
      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();      
  }
}

但是实际的运行并不顺利,报错说“编码GBK的不可映射字符”。学了点Python来着,好像要指定用 UTF-8 编码,于是就加了句# -*- coding: utf-8 -*-,然而果然还是不行啊,天真。百度了一下,大概是编译.java时,如果没有用-encoding utf-8这样指定编译的编码格式的话,javac.exe会按照我们系统默认的编码格式来编译。这样,如果你.java的编码和OS默认的编码不一样的话,当然会出现乱码。原来在VSCode是用utf-8编码保存的.java文件,编译时加上参数-encoding utf-8,就可以正确编译运行。或是在VSCode把.java文件改成用GBK编码来保存,也可以正确的编译运行。

运行结果:

2. 引用类型

  • 在Java中,引用类型的变量非常类似于C/C++的指针。引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个特定的类型,比如Employee、Pubby等。变量一旦声明后,类型就不能被改变了。
  • 对象数组接口都是引用数据类型。
  • 所有引用类型的默认值都是null。
  • 一个引用变量可以用来引用与任何与之兼容的类型。

参考资料

posted @ 2017-03-26 14:19  archeroc  阅读(206)  评论(0编辑  收藏  举报