欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

6. Java中的数据类型---整型、浮点型、字符型、布尔型

程序员文章站 2024-03-08 08:31:51
...

数据类型

6. Java中的数据类型---整型、浮点型、字符型、布尔型


1. 整数类型

基本介绍

Java的整数类型就是用于存放整数值的,比如 12 , 30, 3456等等

整型的类型

6. Java中的数据类型---整型、浮点型、字符型、布尔型

整型的使用细节
  1. Java各整数类型有固定的范围和字段长度,不受具体OS[操作系统]的影响,以保证java程序的可移植性。
  2. Java的整型常量(不能变化的量/值)(字面量, 1 ,45, 90)默认为 int 型,声明long型常量须后加‘l’或‘L’
  3. java程序中变量常声明为int型,除非不足以表示大数,才使用long
  4. bit: 计算机中的最小存储单位。byte:计算机中基本存储单元,1byte = 8 bit。[二进制再详细说,简单举例一个 byte 3 和 short 3 ]
  5. 思考题: long 类型,有几个 bit (8byte * 8 = 64 bit)
    long n = 3;// 本质
    代码演示
public class IntDemo{
	
public static void main(String []args){ 

	//byte b1 = -129; // 报错 错误: 不兼容的类型:
	//System.out.println(b1);

	//常量
		// 90 就是一个常量,也叫字面量 
		// num 是变量
		int num = 90;

	//细节:Java的整型常量(不能变化的量/值)(字面量, 1 ,45, 90)默认为 int 型,
	//声明long型常量须后加‘l’或‘L’
	//说明
	//1. 默认的整数, 是 int 类型,比如 1, 2, 90, 78; 
	//2. 如果我们希望 1 , 2 是 L , 就应该这样写 1L, 2L
	//错误: 不兼容的类型: 从long转换到int可能会有损失
	//本质因为 -> 示意图
		int num2 = 1L; 
		
	//细节java程序中变量常声明为int型,除非不足以表示大数,才使用long
	// 比如 int age = 10; 不使用 long
	//long age = 300;

	//看个案例 => 到底b2 和 s1 在内存中怎样
		byte  b2 = 3;
		short s1 = 3; 
		
		b2 = s1; // 
	}
}

2. 浮点类型

基本介绍
  • Java的浮点类型可以表示一个小数,比如 123.4 ,7.8 ,0.12等等
浮点型的分类

6. Java中的数据类型---整型、浮点型、字符型、布尔型

浮点型使用细节
  1. 与整数类型类似,Java 浮点类型也有固定的范围和字段长度,不受具体OS的影响。[float 4 个字节 double 是 8个字节]
  2. Java 的浮点型常量默认为double型,声明float型常量,须后加‘f’或‘F’。
  3. 浮点型常量有两种表示形式
    十进制数形式:如:5.12 512.0f .512 (必须有小数点)
    科学计数法形式:如:5.12e2 [ 5.12 * 10^2 ] 5.12E-2 [5.12 / 10^2]
  4. 通常情况下,应该使用double型,因为它比float型更精确。[举例说明]
    double num9 = 2.1234567851;
    float num10 = 2.1234567851F;
  5. 浮点数使用陷阱: 2.7 和 8.1 / 3 比较
  6. 代码演示
public class FloatDemo{

public static void main(String []args){ 
		//Java 的浮点型常量默认为double型,声明float型常量,须后加‘f’或‘F’
		//解读
		//1. 2.2 就是 默认是double
		//2. d1 也是double ,类型
		double d1 = 2.2;  //ok
		//思路 1.0 是double , 编译器8个字节
		//        f1 是float , 编译器 4个字节

		//float f1 = 1.0; //有精度损失


		//细节 : 浮点型常量有两种表示形式
		//5.12       512.0f        .512
		double f2 = 5.12; 
		float f3 = 512.0f;  // 当常量后,加F,f, 表示float
		double d2 = .512; // 0.512 可以省略 0

		//细节:通常情况下(没有明确要求使用float),应该使用double型,因为它比float型更精确
		
		double num9 = 2.1234567851;
		float num10 =  2.1234567851F;
		System.out.println("num9=" + num9);
		System.out.println("num10=" + num10);

		//浮点数使用陷阱: 2.7 和 8.1 / 3  比较 [坑]
		
		double num11 = 2.7;
		double num12 = 8.1 / 3; // 2.7

		//看看计算机是如何结果, 小数都是近似值
		//解决方法
		//基本原则. 看两个数差的绝对值,是否在某个精度范围 
		
		//得到两个数的差的绝对值
		//做项目时,该项目会说明(需求文档)
		if(Math.abs(num11-num12) < 0.00000001) {
			System.out.println("相等");
		}

		//细节1, 如果两个小数是直接赋值,不是计算得到,可以直接比较
		double num13 = 2.7;
		double num14 = 2.7;
		if(num13 == num14) {
			System.out.println("相等");
		}

//		System.out.println("num12=" + num12);
//		if(num11 == num12){ //判断是否相等
//			System.out.println("相等");
//		} else {
//			System.out.println("不相等");
//		}

	}
}

3. 字符类型(char)

基本介绍

字符类型可以表示单个字符,字符类型是char,char是两个字节(可以存放汉字),多个字符我们用字符串,在java中String这种,数据类型表示,但是String不是基本数据类型,而是类,类是复合数据类型。

字符类型使用细节
  1. 字符常量是用单引号(‘ ’)括起来的单个字符。例如:char c1 = ‘a’; char c2 = ‘中’; char c3 = ‘9’;

  2. Java中还允许使用转义字符‘\’来将其后的字符转变为特殊字符型常量。例如:char c3 = ‘\n’; // '\n’表示换行符

  3. 在java中,char的本质是一个整数,在输出时,是unicode码对应的字符。 http://tool.chinaz.com/Tools/Unicode.aspx

  4. 可以直接给char赋一个整数,然后输出时,会按照对应的unicode 字符输出 [’\u0061’ 97]

5)char类型是可以进行运算的,相当于一个整数,因为它都对应有Unicode码.
6)代码演示

public class CharDemo{
	
	public static void main(String []args){ 
	
		char c1 = 'a'; // 编码 = 97
		//说明
		//1. 在java中,字符的本质就是一个整数
		//2. 该整数对应一个字符的码值, 比如ASCII码

		char c2 = 97;
		System.out.println(c2); // 'a'

		char c3 = '\n'; //表示换行
		System.out.println("hello");
		System.out.println(c3); //换行
	    System.out.println("hello");

		char c4 = '孙';

		System.out.println((int)c1); // 表示把c1 的码值
		System.out.println((int)c4); // 孙<--->23385
		
		char c5 = 23385;
		System.out.println(c5); //  孙

		//\u0061 是按照16进制赋值 , 也可以理解成是unicode 赋值
		char c6 = '\u0061'; //97
		System.out.println("c6=" + c6); // c6=a

		//char类型是可以进行运算的,相当于一个整数,因为它都对应有Unicode码
		
		//解释
		//1. 先把 c4 替换成 对应的 码值 23385
		//2. 相加 
		int num1 = c4 + 10; //  23395
		System.out.println("num1=" + num1); //

		int num2 = c1 + c1; // 97 + 97 
		System.out.println("num2=" + num2); // 194


		char c7 = '0';

		//if('0' == 0 ) { // 48 == 0
		////等不等?
		//}

	}
}
字符类型本质探讨
  • 字符型 存储到 计算机中,需要将字符对应的码值(整数)找出来 , 比如’a’
    存储: ‘a’ ==> 码值 97 ==> 二进制 ==> 存储
    读取:二进制 => 97 ===> ‘a’ => 显示

  • 字符和码值的对应关系是通过字符编码表决定的(是规定好)

  • 介绍一下字符编码表 [editplus测试]
    ASCII (ASCII 编码表 一个字节表示 , 一个128 个 字符)
    Unicode (Unicode 编码表 固定大小的编码 使用两个字节来表示字符,字母和汉字统一都是占用两个字节,这样浪费空间 )
    utf-8 (编码表,大小可变的编码 字母使用1个字节,汉字使用3个字节)
    gbk (可以表示汉字,而且范围广 =>ANSI, 字母使用1个字节,汉字2个字节)
    gb2312 (可以表示汉字,gb2312 < gbk)
    big5 码(繁体中文, *,香港)


4. 布尔类型:boolean

基本介绍
  1. 布尔类型也叫boolean类型,booolean类型数据只允许取值true和false,无null
  2. boolean类型占1个字节。
  3. boolean 类型适于逻辑运算,一般用于程序流程控制[这个后面会详细介绍]:
    1.if条件控制语句;
    2.while循环控制语句;
    3.do-while循环控制语句;
    4.for循环控制语句
public class BoolDemo{
	public static void main(String[] args) {
		//对于boolean 取值只能是 true 或者 false
		boolean isPass = true; // 真
		if(isPass)  {
			System.out.println("通过考试~~");
		}
	}
}
使用细节说明

不可以0或非 0 的整数替代false和true,这点和C语言不同