数据类型与变量

Java语言提供了八种基本(内置)类型。

六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。

除此之外的(包括String类型)都是引用数据类型。

 基本数据类型 我们又分为大概八种:

数据类型 名称 大小(字节) 范围 默认值
byte 字节型 1B -128 ~ 127 0
short 短整型 2B - 32768 ~ 32767 0
int 整型 4B -2^31 ~ 2^31-1 0
long 长整型 8B -2^63 ~ 2^63-1 0
float 单精度浮点型 4B -10^-38~-10^38和10^-38~10^38 0.0f
double 双精度浮点型 8B -10^-38~-10^38和10^--38~10^38
0.0d
 char  字符型  2B  0 ~ 65535  '\u0000'
 boolean  布尔型  1/8B  true/false  false

 

 

 

 

 

 

 

 

引用数据类型: 

数组类型(array), 枚举类型(enum), 类类型(string ),接口类型(interface)

变量的使用:

使用变量的步骤:

 第一步,声明变量, 即根据数据类型在内存申请空间。

 数据类型  变量名   int  n ;

第二步:赋值,即数据存储至对应内存空间 。

 变量名  = 数值    n= 100;

第三步:使用变量,即取出数据使用。

数据类型 变量名 = 数值  int n = 100;

注意:与JS不同,Java是一种强类型的语言,声明时必须强制定义类型,不但
更加安全,也体现了其严谨。

赋值运算符

变量名 = 表达式; 

 a = b + 1 ;   准确读法:将右边的表达式 b + 1 的值赋给变量a  ;

表达式就是符号( 如加号、 减号) 与操作数( 如b, 1等) 的组合 ;

 

为什么数据有范围? 

变量是申请内存来存储值。而每个类型的变量申请的内存大小不尽相同,比如int占4字节,char占2字节 提示:1G=1024M 1M=1024K 1K=1024Byte 1Byte=8bit 

二进制

计算机是依靠1和0的开关来通过处理器进行计算的。 二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”。 

二进制转换

原则 : 除二取余,倒序排列  用数值乘以2的幂次依次相加 。

 

取值对应:

数据类型 大小 十进制范围 二进制范围
byte
1B -128 - 127
00000000
–11111111
short 2B -32768 - 32767
00000000
00000000 –
11111111
11111111
int  4B -2^31 – 2^31-1
00000000
00000000
00000000
00000000 –
11111111
11111111
11111111
11111111

 

 

 

 

 

 

 

 

 

 

 

基本数据类型转换:

自动数据类型转换的:
1. 转换前的数据类型与转换后的数据类型是兼容的;
2. 转换后的数据类型比转换前的范围表示大 ;

double d = 3.10;
int n = (int)d;
//n的值为d转换截取后的值3

 String 与基本类型转换  

 1. String 转Int 
String str = "100";
//第一种方式
int i = Integer.parseInt(str);
//第二种方式
int j = Integer.valueOf(str);

  2. Int 转String 
  int i = 100;
//第一种方式
String s1 = Integer.toString(i);
//第二种方式
String s2 = String.valueOf(i);

String与float、long之间转换的方式类同

 

System.out.println( (int)(char)(byte)-1 ) . 输出 65535
 如何解决精度损失问题 :  大数据操作 ;
1 。 Bigdecimal  大浮点数
 
BigDecimal  解决 (导入Math 包) 
实例化 BigDecimal  
BigDecimal  db = new  BigDecimal ( "2.00");
BigDecimal  bi  = new BigDecimal ( " 1.10");
// BigDecimal  方法的减法方法subtract。
BigDecimal  d = bd.subtract( bi );
运算符
i ++   先用 i 再加1;
++ i   先加1 再用 i; 
  求值 :  i = 1 ;
    i ++  +  i ++  +  ++i   +  --i  + --i   = ? 
byte a =1; 求 a+=1; 和a=a+1;
a+=1. 包含隐式自动转换, 而a = a+1 ;   则需要强制类型转
a = ( byte) ( a+1);
 
十 ----->>二    进制转换。  
除二取余
二------->> 十 进制转换
乘以2的幂次方              
 
真值
因为第一位是符号位,所以机器数的形式值就不等于真正的
数值。例如上面的有符号数 10000011,其最高位1代表负,
其真正数值是 -3 而不是形式值131(10000011转换成十进
制等于131)。所以,为区别起见,将带符号位的机器数对应
的真正数值称为机器数的真值。
 
例:0000 0001的真值 = +000 0001 = +1,1000 0001的真
值 = –000 0001 = –1
 
原码
原码就是符号位加上真值的绝对值, 即用第一位表示符号,
其余位表示值. 比如如果是8位二进制:
[+1]原 = 0000 0001
[-1]原 = 1000 0001
第一位是符号位. 因为第一位是符号位, 所以8位二进制数的
取值范围就是:
[1111 1111 , 0111 1111],即:
[-127 , 127]
原码是人脑最容易理解和计算的表示方式.
 
反码
反码的表示方法是:正数的反码是其本身;的反码是在其原
码的基础上, 符号位不变,其余各个位取反。
[+1] = [00000001]原 = [00000001]反
[-1] = [10000001]原 = [11111110]反
可见如果一个反码表示的是负数, 人脑无法直观的看出来它
的数值. 通常要将其转换成原码再计算。
 
补码
补码的表示方法是:正数的补码就是其本身;的补码是在其
原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即
在反码的基础上+1)
[+1] = [00000001]原 = [00000001]反 = [00000001]补
[-1] = [10000001]原 = [11111110]反 = [11111111]补
对于负数, 补码表示方式也是人脑无法直观看出其数值的.
通常也需要转换成原码在计算其数值.
 
  位运算符
 
&和&&的区别
&& 称为 逻辑与 (又称短路与),只要前者条件为假后面条件不会执行。称为遇假则假。
&  称为按位与。 不管第一个条件是否为假,两边都要执行,最终得出结果。 
|  和 || 的区别
|| 原理同&& 一样 , 为逻辑或(又称短路或),只要前面为真则就执行, 称遇真则真 。
|  按位或   不管第一个条件是否为真, 两边都要执行,得出最后结果
 
posted @ 2018-09-10 14:43  heybreeze  阅读(336)  评论(0)    收藏  举报