Java数据类型

来自CloudWiki
跳转至: 导航搜索

Java基本数据类型

  • 变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间。
  • 因此,通过定义不同类型的变量,可以在内存中储存整数、小数或者字符。
  • Java 的两大数据类型:
   基本数据类型
   引用数据类型


基本数据类型

  • 基本数据类型的数据占用内存的大小固定,在内存中存入的是数据本身。引用数据类型在内存中存入的是引用数据的存放地址,并不是数据对象本身。

Java2-58.png

思考:请问这句话中几个变量应该分别用什么数字类型来表示 ?(答对得2分,答错不得分,无响应扣2分)

商苑面馆进了 5袋面粉,每袋4.5公斤,产地为‘鲁’,厂址为:“济南市旅游路4516号”,是否本地产:是。

整数型

整数通常这样表示:

int a = 5;

在电脑内存为这个数分配4个字节,占32位,

int 能够表示的范围是:-2147483648(-2^31) ~ 2147483647(2^31-1)。

int是最常用的整数类型,因此在通常情况下,直接给出一个整数值默认就是int类型。

除此之外,还有以下3种:

 byte two = 2; short a = 3276;long a = 10000;

通常所说的整数型,实际指的是如下四种类型:

  • 字节型(byte):用关键字byte定义的整数型变量,内存分配1个字节,占8位(bit),表示的范围是:-128(-27)~ 127(27-1)。
  • 短整型(short):用关键字short定义的整数型变量,内存分配2个字节,占16位,表示的范围是:-32768(-215) ~ 32767(215-1)。
  • 长整型(long):用关键字long定义的整数型变量,内存分配8个字节,占64位。表示的范围是:(-263) ~ (263-1)。

练一练:商院面馆进了5袋面粉。

特殊情况

  • int是最常用的整数类型,因此在通常情况下,直接给出一个整数值默认就是int类型。除此之外,有如下三种情况必须指出:
  • 如果使用一个巨大的整数值(超出int类型的表示范围)时,Java不会自动把这个整数值当成long类型来处理。如果希望系统把一个整数值当成long类型来处理,应该在这个整数值后增加l或者L作为后缀。通常推荐使用L,因为英文字母l很容易跟数字1混淆。例如:
long la = 9876543234L;	 // 超出了int取值范围,必须加“L”
long lb = 98765432L;	    // 未超出int取值范围,可以加“L”
long lc = 98765432;	    // 未超出int取值范围,可以省略“L”

浮点型

float a = 1.2f;double a =1234567.89;

Java浮点型变量有如下两种类型:

  • 单精度浮点数(float型):用关键字float定义的浮点型变量,内存分配4个字节,占32位。
  • 双精度浮点数(double型):用关键字double定义的浮点型变量,内存分配8个字节,占64位。


  • 在为float型常量或变量赋值时,需要在所赋值的后面加上一个字母“F”(或“f”),说明所赋的值为float型。如果所赋的值为整数,并且未超出int型的取值范围,也可以省略字母“F”(或“f”)。例如:
float fa = 9412.75F;	       // 赋值为小数,必须加“F”
float fb = 9876543210F;	// 赋值超出int取值范围,必须加“F”
float fc = 9412F;		   // 未超出int取值范围,可以加 “F”
float fd = 9412;		      // 未超出int取值范围,可以省略“F”


  • Java语言的浮点类型默认是double类型,当然也可以通过在浮点数后添加d或D后缀,显示指定是double类型,但通常没有必要。
  • 例如:double a =1234567.89D; //声明double型变量并赋值
  • Java语言的浮点数有两种表示形式:
十进制数形式:这种形式就是简单的浮点数,例如5.12、512.0、0.512。浮点数必须包含一个小数点,否则会被当成int类型处理。
 科学计数法形式:例如5.12E2(即5.12×102)。
  • 必须指出的是,只有浮点类型的数值才可以使用科学计数法形式表示。例如,51200是一个int类型的值,但512E2则是浮点类型的值。

练一练:假设面粉每袋净重4.5公斤,用单精度怎么表示 ?用双精度怎么表示?

字符型

char sex = '男';

  • Java语言使用16位的Unicode字符集作为编码方式,而Unicode被设计为支持世界上所有书面语言的字符,因此Java程序支持各种语言的字符。
  • 字符型通常用于表示单个的字符。字符型用关键字char进行声明,占用2个字节的内存,字符型的取值必须使用单引号(')括起来。
  • 字符型的取值有三种表示形式:
直接通过单个字符来指定字符型的取值,例如: 'A'、'9'、'我' 等。
通过转义字符表示特殊字符型的取值,例如:'\n'、'\r' 等。
直接使用Unicode值来表示字符型的取值,格式为“\uXXXX”,其中XXXX代表一个十六进制的整数。例如:'\u9999'表示“香”。
  • Java2-3.png
  • 转义字符 含义 Unicode表示方式
\’	单引号	\u0027
\”	双引号	\u0022
\\	反斜杠	\u005c
\r	回车	\u000d
\n	换行	\u000a
\t	制表符	\u0009
\b	退格	\u0008
  • 练一练:商院面粉的产地为'鲁'

布尔型

  • 布尔型只有一种,用于表示逻辑上的“真”或“假”。在Java语言中,布尔型的数值只有true或false。
  • 布尔型用关键字“boolean”进行声明。例如:
boolean b1 = true;	 // 声明boolean型变量b1,并赋值为true。
boolean b2 = false;	 // 声明boolean型变量b2,并赋值为false。
  • 练一练:商院面馆的产地是否为本地

复合数据类型

  • Java语言中除8种基本数据类型以外的数据类型被称为引用数据类型,也称复合数据类型。包括类引用、接口引用以及数组引用。在程序中声明的引用类型变量只是为该对象起一个名字,或者说是对该对象的引用,变量值是对象在内存空间的存储地址而不是对象本身,因此称为引用类型。
  • 比如,字符串String就是引用数据类型。String是一个Java类,因此是一种类引用。
  • 例如:String name = "Tom ";
  • 此时name表示的内存中存放的并不是值“Tom”,而是值“Tom”在内存的存储空间的首地址。
  • 例如:Scanner scanner = new Scanner(System.in);
  • 此时Scanner也是一种类引用数据类型。
  • 更广泛地,我们自己创建的类,也是一种复合数据类型。


头脑风暴

1.在“商院面馆”的经营中,我们会用到什么变量 ?可以用什么类型定义 ?

2.在你的项目中,会用到什么变量 ?又可以用什么类型定义呢 ?

练习:面馆点餐

商院面馆: 招牌牛肉面和酸梅汤,牛肉面10元/碗,酸梅汤 3元/碗

程序的作用是询问点餐的顾客 点几碗牛肉面 和 几杯酸梅汤,然后在控制台上打印出账单。

package task2;

import java.util.Scanner;

public class Variable {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//第一步,获得用户输入
		Scanner sc = new Scanner(System.in);
		System.out.print("请问您想点几碗牛肉面:");
		int num1 =sc.nextInt();
		System.out.print("请问您想点几杯酸梅汤:");
		int num2 =sc.nextInt();
		sc.close();
		//第二步,计算账单金额
		float price1=10.0f;float price2 =3.0f;
		float sum = price1*num1+price2*num2;//计算总金额
		//第三步,输出账单金额
        System.out.printf("您点了%d碗牛肉面,%d杯酸梅汤,一共 %.2f元",num1,num2,sum);
	}

}