用变量保存多种类型的数据
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