Java 变量与数据类型(二)

用变量保存多种类型的数据

class Untitled {
	public static void main(String[] args) {
		String name="大哥";
		char sex='男';
		short age=35;
		float height=1.99f;
		String type="性格不错";
		System.out.println("姓名:"+name+"_性别:"+sex+"_年龄:"+age+"_身高:"+height+"_type:"+type);
	}
}

 姓名:大哥_性别:男_年龄:35_身高:1.99_type:性格不错

class Untitled {
	public static void main(String[] args) {
		String name="大哥";
		char sex='男';
		short age=35;
		float height=1.99f;
		String type="性格不错";
		System.out.println("姓名:"+name+"_性别:"+sex+"_年龄:"+age+"_身高:"+height+"_type:"+type);
		
		name="小弟";
		sex="女";
		age="36";
		height=2.12f;
		type="性格更加不错";
		System.out.println("姓名:"+name+"_性别:"+sex+"_年龄:"+age+"_身高:"+height+"_type:"+type);
	}
}

变量的作用域

1、Java用一对大括号的作为语句块的范围,称为作用域。

2、作用域中的变量不能重复定义。

3、离开作用域,变量所分配的内存空间将被JVM回收。 

基本数据类型的包装类 

包装类说明 说明
Byte 类 byte 类型的包装类
Short类 short 类型的包装类
Integer 类 int 类型的包装类
Long 类 long 类型的包装类
Float 类 float 类型的包装类
Double 类 double类型包装类
Character 类 char 类型的包装类
Boolean 类 boolean 类型的包装类

为什么使用包装类(使用包装类的原因):

1、包装类中封装了一些很实用的方法和常量。

例如:Byte.MIN_VALUE 是Byte类中的一个常量,存放byte类型数据的最小值。

2、包装类在集合中用来定义集合元素的类型。

包装类的常用方法和常量

1-1、Integer.MIN_VALUE:int类型的最小值:-2^31

1-2、Integer.MAX_VALUE:int类型的最大值:2^31-1

1-3、int Integer.parseInt(String sInteger)  (作用:将字符串类型的整数转换成int类型的数据)

1-4、String  Integer.toBinaryString(int value); (作用:将十进制数转换为二进制,返回结果String类型)

1-5、String Integer.toHexString(int value); (作用:将十进制数转换为十六进制,返回结果String类型)

2-1、Double.MAX_VALUE :double类型的最大值

2-2、double Double.parse Double(String sDouble)  (作用:将字符串类型的浮点数转换为double类型的数据)

2-3、String Double.toBinaryString(double value) ( 作用:将十进制数转换成二进制数,返回结果String类型)

2-4、String Double.toHexString(double value)  (作用:将十进制转换成十六进制数,返回结果String类型)

例子:

Byte.MIN_VALUE+"~"+Byte.MAX_VALUE    结果:-128~127

Byte.parseByte("108")+10    结果:118

Integer.MIN_VALUE+"~"+Integer.MAX_VALUE    结果:-2147483648~2147483647

Integer.parseInt("50000")+5    结果:50005

Integer.toBinaryString(16)    结果:10000

Integer.toHexString(16)    结果:10

 

二进制补码

1、计算机系统的内部以二进制的形式存储数据。

2、在Java 程序中输入的十进制的数据都会被自动转换为二进制,Java内部也以二进制来进行数值运算,但返回的结果是十进制。

3、在计算机系统中,数值一律用二进制的补码来存储。

4、二进制的最高位是符号位,0表示正数,1表示负数。

5、正数的值是其本身,负数的值时最高位(符号)不变,其它位逐位取反,再加1。

例如:(1101)2

0010 逐位取反

0010   加上1

(1101)2=-3

二进制数

十进制数补码

十进制值

0000 0 0
0001 +1 1
0010 +2 2
0011 +3 3
0100 +4 4
0101 +5 5
0110 +6 6
0111 +7 7
1000 -8 8
1001 -7 9
1010 -6 10
1011 -5 11
1100 -4 -12
1101 -3 13
1110 -2 14
1111 -1 15

6、两数相加,若最高位(符号位)有进位,则进位被舍弃。

例如:4位二进制补码中,5-3的结果是2

为什么使用补码?? 

1、可以将符号位和其他位统一处理

2、最高位不再表示数值,而是作为符号位,正好将数值折半,即一半是0至正数,一半是负数。

例如:

(1)4位二进制数总共有16个数,用补码表示,则一半是0~7,一半是-1~8。

(2)8位二进制数总共有256个数,用补码表示,则一半是0~127,一半是-1~-128。

3、减法也可按加法来处理;

例如:7-3,可以表示为7+(-3),二进制表示为:

补码运算的特征??

 1、计算机中正数和负数的关系是取反加一。

【实例】在四位二进制数中,已知3的二进制值是0011,若要求-3,则

  0011        3

  1100        逐渐位取反

  1101        +1

   结果就是   -3

   则 -3 的二进制值是1101

 2、补码运算是封闭的:运算的结果保留在补码范围之内,超范围就溢出。

 【示例】四位二进制的补码运算中,请计算5+4的结果。

3、4位二进制补码最多能表示2^4  (16) 个数,数的范围是 -8~7

4、8位二进制补码最多能表示2^8 (256) 个数,数的范围是 -128~127

5、16位二进制补码最多能表示2^16 (65536) 个数,数的范围是 -32768 ~ 32767

6、32位二进制补码最多能表示2^32个数,数的范围是-2^31~2^31-1

补码的运算的原理???

正数+负数=模

模:某种类型数据的总数,例如:

4位二进制数的模是2^4=16 

8位二进制数的模是2^8=256

16位二进制的模是2^16=65536

32位二进制数的模是2^32

【示例】在4位二进制中,7+(-7)=16

 因此,负数=模-正数,这就是逐位取反加1的原因。

二进制、八进制、十进制、十六进制互转

1、数制是用一组固定的符号和统一的规则来表示数值的方法。

2、计算机底层使用的数制是二进制。

3、用Java编程使用的是十进制。Java底层使用二进制。

4、计算机常用的数制还有八进制和十六进制。

十进制的基本数字0~0,逢十进位。

10称做 “基数”,10^n(10的n次幂)被称作 “权” 。

10000=1x10^4

1000=1x10^3

100=1x10^2

10=1x10^1

1=1x10^0

【示例】23678(10进制)=2*10000+3*1000+6*100+7*10+8*1

 =2*10^4+3*10^3+6*10^2+7*10^1+8*10^0=23678

二进制的基本数字是0、1,逢2进位。

二进制的基数为2,权为2^n(2的n次方)

1=1x2^0

10=1*2^1

100=1*2^2

1000=1*2^3

10000=1*2^4

100000=1*2^5

1000000=1*2^6

10000000=1*2^7

1、基本数字:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F

2、特点:逢十六进位

3、十六进制是二进制的简写,方便专业人员书写二进制数据。

4、16进制的基数为16,权为16^n(16的n次方)

5、在Java代码中十六进制数用0X或0x做前缀(0是数字零,而不是字母O)

0x1000=1x16^3

0x100=1x16^2

0x10=1x16^1

0x1=1x16^0

计算机系统概述???

1、数制是用一组固定的符号和统一的规则来表示数值的方法。

2、计算机底层使用的数制是二进制。

3、用Java编程使用的是十进制。Java底层任使用二进制。

4、计算机常用的数制还有八进制和十六进制。

     十进制的基本数字0~9,逢十进位。10称做 “基数”,10^n(10的n次幂)被称做 “权”。

     10000=1x10^4;1000=1*10^3;100=1x10;10=1x10^1;1=1x10^0;

【示例】23678(10进制)=2*10000+3*1000+6*100+7*10+8*1=

                                            2*10^4+3*10^3+6*10^2+7*10^1+8*10^0=23678

二进制的基本数字是0、1,逢2进位。二进制的基数为2,权为2^n(2的n次方)

1=1x2^0

10=1x2^1

100=1x2^2

1000=1x2^3

10000=1x^2^4

100000=1x2^5

1000000=1x2^6

10000000=1x2^7

示例:(1111)2=(______)10

(1111)2=1x2^3+1x2^2+1x2^1+1x2^0=8+4+2+1=15;

 

十六进制

1、基本数字:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F

2、特点:逢十六进位

3、十六进制是二进制的简写,方便专业人员书写二进制数据。
4、16进制的基数为16,权为16^n(16的n次方)

5、在Java代码中十六进制数用0X或0x做前缀(0是数字零,而不是字母O)

0x1000=1x16^3

0x100=1x16^2

0x10=1x16^1

0x1=1x16^0

【示例】:(5E)=(_________)10;5x16^1+14x16^0=80+14=94;

十六进制与其它进制的转换

十六进制转十进制:(41)16=(____________)10:4x16^1+1x16^0=65

十六进制转二进制:(41)16=(____________)2;(0100 0001)2 说明:16进制的1位数代表2进制的4位数。

二进制与其它进制的转换

二进制转十进制:(10110)2=(_______)10;1*2^4+1*2^2+1*2^1=(22)10;

二进制数转十六进制:

规律:四位二进制数相当于一位十六进制数。

【示例】(1101 0110)=(_________)16;

1101=1*2^3+1*2^2+1*2^0=8+4+1=13;

0110=1*2^2+1*2^1=4+2=6;

(1101 0110)=(D6)16

【示例】

已知:计算机的基本存储单位是字节(byte),一个字节有8位。

8位2进制的最大值  = (1111 1111)2

编写程序,计算并显示8位2进制数的最大值,即将(1111 1111)2转换为10进制数。

解题思路(1):

(1111 1111)2=1x2^7+1x2^6+1x2^5+1x2^4+1x2^3+1x2^2+1x2^1+1x2^0;

 结果:255.0

 解题思路(2):

(1111 1111)2=(10000 0000)2=1x2^8-1

十进制与其它进制的转换

【进制数转二进制】规律:不断除以2,保留余数,商为0时不再除2,。将所有余数倒序排列。

【示例】 (13)10=(________)2

 【十进制数转十六进制进制】

  规律:不断除以16,保留余数,商为0时不再除16。将所有余数倒序排序。

 【示例】(138)10=(____________)16

             

   

猜你喜欢

转载自blog.csdn.net/u013491829/article/details/106314492