java:变量(二)变量的基本类型

二、整型与浮点型细节:

1、组成

整型变量是由符号位和数位两部分组成

浮点变量是由符号位、指数尾、尾数位组成

整型和浮点型变量的首位都是符号位,用来表示数据的正负

2、整型浮点型变量的长度和取值范围是固定的(事实上同一语言的基本数据类型的长度都是固定的)

3、long类型:对于java,默认的整型变量类型为int,即使定义时使用long类型:

long l1 = 100;        

long l 2 =  4294967296;  

Exception in thread "main" java.lang.Error: 无法解析的编译问题:
    类型 int 的文字 4294967296 超出了范围

想要给long类型的变量赋值,则需要在赋值时在数字后加上L或小写“l”(如果赋值比较小,可以直接赋值给long类型的变量,但变量类型会自动变成int类型,然后在需要的时候变回long类型。(类型转换后边会提到)

		long l = 4294967296L;  

4、int类型数据的容量有±21亿,足以应付绝大多数情况。

5、bit与byte,bit(比特)是最小存储单位,单位是“位”;byte(字节)是基本存储单位,单位是“字节/字”

6、float类型:对于java,默认的浮点型变量类型为double,即使定义时使用float类型:这点与long类型同理;不同的是float类型后加的是F或者f

7、浮点数常量有两种表现形式:十进制型和科学计数法型

		long l = 4294967296L;    //long在赋值大数据(超过21亿)时需要在数字后加L
		float f = 4294.96F;      //float同理
		System.out.printf("\n十进制数%3.3f。\n科学计数法数%1.3e。",f,f);

十进制数4294.960。
科学计数法数4.295e+03。

8、8..1/3与2.7

		System.out.println(2.7+"  "+8.1/3);

2.7  2.6999999999999997

在计算机中8.1/3并不等于2.7,原因是因为计算机用的是二进制数,二进制数十进制转换过程中会出现一定的误差(因为不能无限保留位数)这个误差并不会很大,但也会导致一些比较严重的问题,例如两个本应相等的数无法相等。

double d1 = 2.7,d2 = 8.1/3;
		if(d1 == d2) {
			System.out.println("两数相等");

上述条件语句不会输出。

解决方法:不直接看两数是否相等,而是看两数差的绝对值是否在一个极小的范围内。

		if(Math.abs(d1 - d2) < 0.00001){  //取绝对值的方法
			System.out.println("两数可能不相等,但误差小于0.00001了");
		}

9、二八十六进制:

二进制:0b+二进制数

八进制:0+八进制数

十六进制:0x(0X)+十六进制数(ABCDEF,分别表示10~16)

三、字符类型

1、字符类型可以存储字符常量和字符常量对应的ASCII码

如果存储字符常量,则需要用 ‘ ’ 括起来;

2、java的字符类型变量允许存储转义字符。

3、字符类型也允许存储汉字等多国语言,只要该字符可以在Unicode码上。

4、打印(输出):既可以输出字符本身,也可以输出字符对应的Unicode码(强制转换成int类型的)

5、字符类型的变量也可以进行运算。

public static void main(String[] arg) {
		//字符类型与布尔类型
		char c1 = 'a';    //可以存储字母
		char c2 = '冉';   //可以存储汉字
		char c3 = '\n';   //可以存储转义字符
		char c4 = 97;     //可以存储字符对应的ASCII值
		System.out.println(c1+""+c2+""+c3+""+c4);		
		System.out.println((int)c1+"\n"+(int)c2+"\n"+(int)c3+"\n"+(int)c4);	
		//输出对应的Unicode码值
		System.out.println(c1+c2);	
		System.out.println(c1+c3);
		
	}

a冉
a
97
20873
10
97
20970
107

6、字符的存取:

存储:‘a’==》码值97==》二进制码==》存储

读取:读取==》二进制码==》码值97==》‘a’

四、字符编码表:

大致的时间和演进顺序

ASCII码最早,由于成型时间早加之是美国人编写的(字母的基本单位少),所以容量小;后来各国陆陆续续推出了自己的编码表:中国推出了gb2312(简字体为主,兼有日语平假文等),以及后续的gbk(兼有繁体与简体、日语、韩语等);中国台湾推出了繁体字为主的BIG-5;日本推出了jls。由于各个编码方式的码并不兼容,所以在此基础上推出整合的ANSI码在不同的国家地区编码也不同,跨国交流时依然有很大挑战。因此在此基础上,统一了全部编码的Unicode码实现了真正的大一统,但由于体系太过庞大,每一个码的大小可能长达三四个字节,因此由Unicode码革新而来的UTF-8编码受到了人们的欢迎。UTF-8 是目前互联网上使用最广泛的一种 Unicode 编码方式。

具体可以看:

字符编码类型

五、布尔类型

布尔类型(bool)就是用于判断真假的数据类型,Python中只有两种布尔类型:True与False。

长度只有一个字节

一般用于逻辑运算;用于控制程序的进行。

java语言中无法用零和非零来代指true和false。

boolean flag = false;
		if(flag) {    //if括号内为真则执行if后的语句,否则跳过该语句,执行else后的语句,若无则跳过
			System.out.println("考试已通过");
		}
		else {
			System.out.println("考试未通过");
		}
		

考试未通过

六、引用数据类型:

引用数据类型一共有三大类:

接口cinterface、类class、数组([])

七、java API

java application programming interface(java应用程序接口)简单来说,就是一个列表,一个包含java当前版本java类库中所有类、接口、方法等的大列表,帮助编程人员更好的使用java的类库进行编码。。

Java 8 中文版 - 在线API中文手册 - 码工具

总结:今天学习了java数据类型的细节,对于java是强类型语言这句话有较深感触。明天学习强制类型转换和自动类型转换,对这句话的感触或许更深。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值