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
相关文章推荐
- 黑马程序员__Java基础__数据类型__运算符__数组
- 黑马程序员 Java基础_2 数据类型、运算符及应用
- java基础---->数据类型、运算符、程序控制
- 【重走Android之路】【Java面向对象基础(一)】数据类型与运算符
- java基础---->数据类型、运算符、程序控制
- Java 入门(二)数据类型 运算符 表达式 -------程序设计的静态基础
- 黑马程序员_Java基础_进制转换、基本数据类型、运算符、流程控制语句等
- java基础-- 数据类型和运算符
- Java 学习基础第三章之数据类型和运算符
- 黑马程序员——Java基础语法(一)—关键字、标识符、数据类型、运算符
- 【学习笔记三】最基本的JAVA基础[数据类型,运算符]
- java基础复习--数据类型、运算符、程序结构
- java基础---语言组成、数据类型、运算符
- 黑马程序员_Java基础_02常量、变量、数据类型、运算符、语句、程序执行过程
- Java基础学习2--数据类型与运算符
- 黑马程序员_java基础一(标识符,关键字,基本数据类型,运算符)
- Java基础知识(数据类型、标识符、变量、运算符和流程控制语句)
- java基础学习 视频学习 数据类型以及运算符
- 黑马程序员——Java语言基础——关键字、表示符、常量、变量及数据的类型、运算符
- 黑马程序员_Java基础_常用基础内容(进制转换、基本数据类型、运算符、流程控制语句等)