您的位置:首页 > 编程语言 > Java开发

java基础(2) 数据类型及运算符

2018-03-25 18:13 381 查看

基本数据类型

基本的数据类型及存储的位数,取值范围



整形数据的几种进制

十进制整数,例如12,-127,0

二进制整数,以0b开头

八进制整数,以0开头

十六进制整数,以0x或0X开头

浮点数

十进制形式,例如3.14

科学计数法形式,例如3.14e3。 表示3.14*10^3

浮点数有两种 float单精度和double双精度

在对float数据进行赋值时,要在数字的后面添加f(或F),否则Java编译器会认为这是一个double类型的数值,double类型的数值不能直接赋值给float类型的数据

回车符\r

\r是回车符,表示移到该行的首部并将后面的数据覆盖到之前的数据上

system.out.print(“haizeiwang\rmeiyou”);


` 最终运行显示meiyouwang

\r后面的meiyou将haizei覆盖了但是后面的wang任然正常显示

基本数据类型的转换

将表示范围小的数据类型赋值给表示范围大的数据类型时,Java自动使用隐式类型完成数据类型转换,即:

低———————————————————————————————————————->高

byte ————> short/char ————> int ————> long ————> float ————> double

float与int虽然都是32位但是float有科学计数法的表示方法,指数形式表示的数据范围比int大得多,因此float比int高

float x
4000
= 100; //int赋值给float,x的值为100.0

能直接进行转换,如果遇到高位要转低位则需要进行强制类型转换

强制类型转换

主要格式为(要转换的类型)被转换的值

例:

int x=(int)23.89;//x的值为23

long y=(long)34.98F; ;//y的值为34

byte z = (byte)187;//z的值为-69,数据结果出现溢出

强制类型转换可能导致数据精度损失或溢出

变量和常量

变量

int studentAge=16;  //变量


命名时首字母必须小写,如果由多个单词组成,从第二个单词开始首字母必须大写

常量

final int STUDENT_AGE=16;   //常量


通常前面用final修饰,常量命名所有字母都大写,两个单词之间用下划线分开

常量在声明时要赋值

常量不能被二次赋值*

三目运算符

三目运算符语法如下:<逻辑表达式> ? <表达式1> : <表达式2>

当前面的逻辑表达式为true时执行表达式1,为false时执行表达式2

数据计算

数据存储一般使用补码的形式

补码的计算公式:

正数:源码、反码和补码都相同。

负数:补码 = 反码(符号位保持不变) + 1

注意:

负数在计算补码的时候,在源码取反的过程中要保留符号位不变,其他位取反,例如:10001010取反11110101(第一个1不变)。

位运算

位运算是将数据先转化为二进制数补码形式,再逐位(bit)按规则计算。

“按位与”运算符“&”,规则:全1则1,否则为0

“按位或”运算符“|”,规则:全0则0,否则为1

“按位非”运算符“~”,规则:遇1则0,遇0则1

“按位异或”运算符“^”,规则:相同为0,不同为1`

3 ^ 5 = 6;
6 ^ 5 = 3;
-3 ^ -5 = 6;


-3转化为补码形式 1000 0011 ——>反码 1111 1100 ——>补码 1 1 1 1 1 1 0 1

-5转化为补码形式 1000 0101 ——>反码 1111 1010 ——>补码 1 1 1 1 1 0 1 1

异或之后 0 0 0 0 0 1 1 0

为正数所以补码就是源码 结果为6

位运算要计算符号位,取反时不要算

移位运算

>> 右移运算符:将二进制数据进行右移运算

<< 左移运算符:将二进制数据进行左移运算

>>> 无符号右移运算符:无论正负,都在高位插入0

整数每左移一位,相当于*2,左移3位相当于*8,因为仅仅是位移,所以这是计算5*8的最快方式

几种特殊的java代码

类型错误

public class Demo{
public static void main(String args[]){
short a=1;
a=a+1;
System.out.println(a);
}
}


其中a=a+1处错误

a时short类型而1是整形,不能转换成short类型的数据

java中的短路现象

逻辑运算符(&&,||)和位运算符(&,|)的区别

逻辑运算符只能针对boolean类型进行逻辑运算,而位运算还可以对数值进行逻辑运算。

逻辑运算符有短路情况,即前面的表达式可以得到最终结果时,后面的表达式将不被执行。

public class Demo{

public static void main(String args[]){
int x=20,y=20;
if(((x=0)==0)||((y=10)>3))
System.out.println("x="+x);
System.out.println("y="+y);
}
}
}


对于判断条件(x=0)==0是正确的所以后面的逻辑表达式不会被执行,

结果输出的x=0,y=20;

易错

public class Test {
public static void main(String [] args) {
int x = 0;
for (int i = 0; i < 100; i++) {
x = x++;
}
System.out.println(x);
}
}


输出结果为0;

x=x++;最终x为前一个x,不是后一个x
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐