Java中的数据类型


Java是一个强类型的编程语言 所有的变量在第一次出现的时候 必须有数据类型

Java当中数据类型有多少种?

2种 [基本数据类型+引用数据类型]

或者

无数种[8种基本数据类型+无数种引用类型]

基本数据类型 简单数据类型 [语言内置的数据类型]
4类8种

布尔类型:boolean

==========================
*:只能使用true/false进行赋值 很纯粹~ 不能用0 1进行赋值
*:不能拿着数字进行赋值 Java又称为C+±- [去其糟粕取其精华]

字符类型:char

======================================
*:底层基于Unicode编码存储的 统一的都是2个字节 = 16位
这16个位都是数值位 没有符号位 取值范围:0 到2的16次方-1

		  char x1 = 'a';			//指定字面值的赋值方式
		  char x2 = '中';			//指定字面值的赋值方式

		  char x = 20013;			//通过ASCII编码进行赋值
		  char y = '\u4e2d';		//通过Unicode编码进行赋值

*:可以使用jdk安装目录下的bin目录中的native2ascii命令进行转换
今后无论Struts还是SpringMVC的
I18N(internationalization)支持 都可能会使用它

它还可以直接转换整个文件 native2ascii 原文件.txt 处理后的文件.txt
事实上我们还可以将4e2d这样的16进制转换成10进制得到十进制整数

		  char z = '\t';				//转义字符

常用的转义字符:

\t		\b		\r		\n
制表符	退格符	回车符	换行符

*:官方认证考试或者笔试当中经常出现后三种赋值

整数类型:符号位1  数值位n-1
	取值范围:-2(n-1) 到 2(n-1)-1
		其中n-1:符号位占用一个位  	最后的-1:因为0占用一个正数编码

			byte   short  int   long
	n:	  	8      16    32    64
						  *    L/l
		
		*:long类型需要加L/l 尽量加上大写L 防止肉眼犯错误
		*:当超出int类型最大边界的时候 注意使用long类型
		*:整数类型的默认类型是int类型

		int num1 = 24;				//通过十进制进行赋值
		int num2 = 024;			//通过八进制进行赋值
		int num3 = 0x24;			//通过十六进制进行赋值
		int num4 = 0b1011;			//通过二进制进行赋值

*:JDK7.0开始才允许使用0b1011这样的二进制赋值
*:JDK7.0为了增强数值的可读性 可以加_ (但是语法并不严谨)
*:笔试当中常见System.out.println(12+012+0x12);

		*:十进制和二进制之间的转换 

额 我不想写了 特别注意负数从-1开始做减法~

浮点类型:符号位 + 幂值位 + 数值位
	float	     double
	 32           64
			      *
	 F/f	      D/d
		
	常见面试题:
	float number = 3.2E4F 当中的E和F分别表示什么
		E:表示科学计数法    3.2*10(4)
		F:表示float类型 因为默认的浮点类型是double 所以定义float必须加F

十进制浮点数转换为二进制单精度浮点数

	float:	符号位1 + 幂值位8 (默认值127)	+ 	数值位23
	double:	符号位1 + 幂值位11 (默认值1023)	+ 	数值位52

关于幂指位默认值 float : 01111111 double :01111111111
127 1023

	*:浮点类型二进制的转换 可以百度IEEE754 
			一定要注意那张草稿纸~

*:引申问题:2.0-1.1为什么不等于0.9
浮点型转换二进制可能涉及数值位的无限循环…
该如何解决~
BigDecimal 或者 1元等于100分

引用数据类型 自定义数据类型 [程序员自己开发的数据类型]
无数种

例如:class Student{} 例如:String Date 等等

关于最后10分钟流程控制当中的内容总结:

关于switch case

switch(变量){
case 值1: 对应的操作; break;
case 值2: 对应的操作; break;
case 值3: 对应的操作; break;
default : 默认的操作;
}

*:注意变量的类型
最开始支持byte short char int JDK5.0开始支持枚举 JDK7.0开始支持String
*:注意break机制 要学会利用break机制实现相邻分支的代码共享

你要明白break机制是为了给程序员提供便利的 而不是为了给我们添堵的~

例如:我一周晚上的安排
周一:开例会
周二:上课
周三:整理键盘
周四:上课
周五:开例会
周六:上课
周日:整理键盘

就可以使用break机制写成

switch(day){
case 1:
case 5: System.out.println(“开例会”);break;
case 2:
case 4:
case 6: System.out.println(“上课”);break;
case 3:
case 7: System.out.println(“整理键盘”);
}

所以说呢 学东西的时候要多思考为什么~多去在代码当中寻求的答案

关于for循环

for循环不是一辈子的填空题 你要理解
for(1;2;3){
4;
}

  1. 循环变量初始化 未必永远都是int i = ?
  2. 循环执行的条件 未必永远都是i>?或者i<?
  3. 循环的迭代条件 也就是每次循环后的变化 未必是i++或者i–
  4. 循环体 要重复执行的操作

例如打印1-100之间所有17的倍数
for(int i = 17;i<=100;i+=17){
System.out.println(i);
}
远远好于
for(int i = 1;i<=100;i++){
if(i%17==0){
System.out.println(i);
}
}
再例如打印a-z
for(char c = ’a’;c<=’z’;c++){
System.out.println©;
}
远远好于
for(int i = 97;i<123;i++){
System.out.println((char)i);
}

综上所述:编程是一门艺术 是理科 不要依赖死记硬背 不要模式化思维~
要做到无招胜有招~

基本运算符号

& 按位与

1 当一个正数%2的n次方的时候,可以直接使用&(2的n次方数-1)

因为在计算机的底层都是二进制
进行&运算 相当于对比一排二进制 基本不需要计算

89&3

二进制转换

		89 28 15 95 37 38 45
	
89 = 64 + 16 + 8 + 1 = 1011001
        89 28 15 95 37 38 45
%4      1  0  3  3  1  2  1
&3       1

89&3

		0001011001
&	    0000000011
-----------------------------
        0000000001 = 1

28&3

28 = 16 + 8 + 4  = 11100

28&3

	0000011100
&   0000000011
----------------------
	0000000000 = 0
结论
%2		%4		%8		%16		%32		%64 ...
&1		3		&7		&15		&15		&63	...	

Java HashMap中的&的运用

默认的分组组数16

在这里插入图片描述

new Hash(5)  	//	8 	会分成8组 为了&更高效的得出散列到哪个小组
new Hash(6)		//8
new Hash(11)		//16
	67	22	62	28	52	%4
[0]	52	28
[1]
[2]	62	22
[3]	67

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oifengo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值