java学习第三天

**javadaoy03 **
java中的数据类型及基本运算
1.分类:
1)基本数据类型
2)引用数据类型
2.基本数据类型详解
1)boolean类型:
boolean a=true/false;
2)字符类型:
char 底层基于Unicode编码
char类型不区分大小写,一个字符或一个汉字均占2个字节(16位)
例:
char x = ‘a’;
char y = ‘我’;
char z = 96;//Ascii编码
char w = ‘\u4e2d’;//Unicode
char t = ‘\t’;//转义字符
3)整数类型:
byte short int long
位: 1 2 4 8
字节: 8 16 32 64
*:整数类型默认是int类型
*:long类型的结尾尽量加上L
*:当数值超出int类型最大边界的时候 注意使用long类

       整数类型:符号位【1】 + 数值位【n-1】
		取值范围:-2(n-1)到2(n-1)-1
		n-1:符号位占用只能用一个位
		-1:0占用一个位  
		赋值:
		int num1 = 15;//通过十进制进行赋值  *****

		int num2 = 015;//通过八进制进行赋值		      取值范围:   0-7
		int num3 = 0x15;//通过十六进制进行赋值	   取值范围  	  0-9 a-f
		int num4 = 0b1011;//通过二进制进行赋值	   //jdk1.7新增

4 浮点类型:
由符号位+幂值位+数值位组成
float double
字节 32 64
*
F/f D/d

double位默认类型
System.out.println(45.5);//此时45.5为double类型
float float=2.03F(F/f必须添加)
float与double对应的二进制结构:
float:符号位1 + 幂值位8 + 数值位23
double:符号位1 + 幂值位11 + 数值位52

5) 基本数据类型之间的转换:

		小的数据类型可以直接给大的数据类型赋值
		大的数据类型需要强转成小的数据类型
        *:char类型和short类型之间永远需要强转
		*:byte类型和char类型之间永远需要强转    
         int 转String :
         1. String x=45+" ";//任何数+“ ”偶都会变成字符串
         .2.int x = 15; String  = String.valueOf(a);//int转String。
         String装int:
         String y= "15";int x = Integer.parseInt(a);//String 转int。
         i

2.引用数据类型
包括数组,类,接口
注:String类型是项目中必不可少且使用最多的数据类型,它属于引用数据类型中“类”的范畴。
3.java中的运算符

 + - * / %
[+ 当+遇到String类型的时候 不再表示算数加法 而是表示追加连接]
	int x = 45;
	String y = x + "";//45 + "" = "45"

[* 当心数值超出int类型最大边界 注意使用long类型]
	365L * 24 * 60 * 60 * 1000

[/ 整数除以整数 结果一定是整数]

[% 取模运算符 求余数 最终结果的符号位取决于参与运算的第一个数的符号]

4.处理小数运算产生的精度问题
1).例:2.0-1.1 !=0.9 //1.1再计算机存储中会出现溢出
java中任何一个整数都可以用二进制精确的表示出来
但是不代表任何一个小数也可以在有限的位数里面表示出来
1.1在底层存储的时候 出现了数值位的截取 导致数值不正确
2):解决方法
1.数值扩大X倍 单位缩小X倍(比较low的方法)
2.通过BigDecimal函数
案例:

	     BigDecimal b1 = new BigDecimal("2.0");
  	     BigDecimal b2 = new BigDecimal("1.1");//必须要用双引号,否则1.1还会溢出
  	     BigDecimal b3 = b1.subtract(b2);//减法
  	     BigDecimal b3= b1.add(b2);//加法
	     System.out.println(b3);//b3=0.9

5.进制转换
1.浮点类型和二进制之间的转换

float x = 45.25F;
1:将上面的两个部分全部转换成二进制
	a:整数:45 = 32 + 8 + 4 + 1 = 101101
	b:小数:0.25 = 01
		*:不断*2取整(直到余数为0)

		0.25 * 2 = 0.5
		0.5 * 2 = 1.0
	a + b = 101101.01

2:将上面的结果转换成二进制的科学记数法
	101101.01 -》 1.0110101 * 2(5)

3:对号入座:
	符号位1 + 幂值位8 + 数值位23
	  0	  10000100  01101010000000000000000
	  127 + 5 = 132 = 128 + 4 = 10000100
	   最终结果: 01000010001101010000000000000000

2.十进制和二进制之间的转换
正数:
byte x = 55;
55 = 32 + 16 + 4 + 2 + 1 = 00110111
负数:(用补码表示)
byte x = -59;
-59 = -1 - 58 = -1 - 32 - 16 - 8 - 2
= 11000101
或者先求整数的二进制,然后取反加 1
6.关于运算符操作的最小的单位

   byte x = 10;
		byte y = 10;
		//byte=int
		byte z = x + y;//所有的运算符最小的操作单位是int所以会编译出错,
		int z=x+y;//才会正确
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值