以前咱们提到过Java是强类型语言,也就是说咱们必须为每个变量声明一种类型。Java的数据类型可分为两种:基本数据类型和引用数据类型。在Java中有8中基本数据类型(primitive type):java
a、整数型: byte 占 1个字节(8个bit) 范围-128——127 short 占 2个字节(16bit) 范围-2^15——2^15-1 int(默认) 占 4个字节(32bit) 范围-2^31——2^31-1 long 占 8个字节(64bit) 范围-2^63——2^63-1(超int范围時在後面加l,最好寫大L,小l与1太像容易混淆) b、浮点型:(小数) float单精度 占 4个字节(32bit) 3.4E-38——3.4E+38(书写时在后面加f,如1.2f) 最多精确表示7位小数 float的数据范围比long大,二者底层存储结构不一样 IEEE 754 规定 float:从左往右 第1位表明符号位, 第2-9位表明指数位,0-255,0表明0,255表明无穷大,1-254都減去127, 变为 -126——127 第9-32位表明尾数位 SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM(signl是符号位,f是23bit的小数部分,exponent是指数部分) 最后結果:(-1)^(sign)*1.f*2^(exponent) double双精度(默认) 占 8个字节(64bit) 范围 最多精确表示15位小数 long double 占16个字节(128bit) c、字符型: char 占 2个字节(16bit) 范围 d、布尔型: boolean 沒有明确指定的大小(理论上占八分之一个字节),由于一個开关就能够決定true和false(书写時也可在后面加,但通常不加)
在Java中,每个变量属于一种类型(type。在声明变量时要指定类型),示例:函数
byte a = 12; short b = 12; int x=(int)(9.99L);//强制类型转换 int c, w, r = 12;//一条语句能够定义多个变量 long d = 2123453553345345445l; float e = -9.0f; double f = 12.2; char g = 'w'; boolean h = true;
int var; var=1;//初始化
Java中常量可分为两种:字面值常量和自定义常量code
字符串常量 用""括起来的内容 整数常量 全部整数 小数常量 全部小数,操做小数有必定的弊端,小数位不够精确(float和double的特殊数据存储结构) 字符常量 用单引号括起来的内容,只能放单个数字,字母或符号(单个汉字也能够) 布尔常量 只有true和flase 枚举常量 enum 枚举类型名{常量1,常量2,常量3,.......}; 空常量 null 枚举类型的使用: enum Size{SMALL,MEDIUM,LARGE}; Size s=Size.MEDIUM;
final int A=1;
final表示这个变量只能被赋值一次,且被赋值以后就不能更改了,通常来讲常量名使用大写(注意const是Java的保留字,可是目前并无被使用)对象
运算符:对常量和变量进行操做的符号。Java的运算符与C基本一致(运算符的优先级别也和C一致,在此再也不赘述):字符串
运算符:对常量和变量进行操做的符号 a、算术运算符:一元运算符、二元运算符 + ,- ,*,/,%,++, -- ++、--:都是单独使用 整数相除只能获得整数,若是想获得小数,能够把数据(至少其中一个)变成浮点型 %:任何正整数%2结果不是0就是1,能够用来切换条件 b、 赋值运算符 基本赋值运算符:= 扩展的赋=值运算符:+=,-=,/=,%=(自动类型转换) c、关系运算符 ==,<=,<,>,>=,!=(结果为布尔类型) d、逻辑运算符 &,|,^,! &&、||具有短路的效果(左边为false右边就不执行了;左边为true右边就不执行了) e、位运算符 &、|、^、~(按位取反)、>>>(左补齐0)、>>(保留符号位)、<<(右补齐0) a^b^b =a; f、三元运算符 (关系表达式)?表达式1:表达式2
运算符示例,你能够运行一下:虚拟机
System.out.println(-13%5);//结果-3 System.out.println(b1++);//结果2 System.out.println(++b2);//结果4 int x=5,y=6,z=8; x=x++ + ++x + x+12;// ++、--:放在操做数前面时,先自增自减再参与运算;在操做数后面时,先运算再自增或自减 System.out.println(x); System.out.println(!true); System.out.println(x>2&x<32); System.out.println(x>2|x<12); System.out.println(x>2^x<30);//异或,相异为真 System.out.println(2>3?1:2); //不使用第三方变量交换变量值 x=x+y; y=x-y; x=x-y;//有可能会超出数据范围,损失精度 x=x^y; y=x^y; x=x^y;// //其实仍是使用第三个变量的最好。。。
Math类包含了各类各样的数学函数,例如:数学
double x=Math.sqrt(4);//4^2
若是你须要在程序中频繁使用Math这个类,可能会对在方法前加上Math感到厌烦,此时你能够这样作:it
import static java.lang.Math.*; 此时在程序中,你能够直接调用: System.out.println("4^2"+sqrt(4));