Java语言里的“;”,"{}","[]","()"," ","."都具有特殊的分割作用,被称为分隔符
对语句进行分割。
定义代码块。代码块在逻辑上是一个整体。
主要作用是对数组元素进行访问,方括号通常紧跟数组变量名
分隔一条语句的不同部分
圆点通常用作类/对象和它的成员(属性、方法、内部类)之间的分隔符,表明调用某个类或某个实例的指定成员。
Java的标识符必须以字母、下划线、美元符号开头,后面可以跟任意数目的字母、数字、下划线和美元符。此处不局限于英文字母,还可以中文、日文等。
Java所有关键字都是小写的,共有48个关键字
Java的基本数据类型可以分为两大类:boolean类型和数值类型。
整形通常包括下述类型:
一个Java整数常量默认就是int类型。但是存在下述两种情况:
字符型通常表示单个字符,字符常量必须使用单引号括起来。
Java的浮点类型有两种:float,double。
Java的浮点类型的字段长度和表数范围和机器无关
Java采用二进制数据的科学计数法来表示浮点数,对于float型数值,第一位是符号位,接下来8位是指数为,接下来2位是尾数;对于double型数值,第一位是符号位,接下来是11位表示指数,接下来的52位表示尾数。
一个double类型的数值占8个字节,64位
一个float类型的数值占4个字节,32位
注意:只有浮点类型的数值才能使用科学计数法表示。
如果想让一个浮点型当作float处理,该将这浮点型值后紧跟f或F
用于表示溢出或出错。
public class TestFloat { public static void main(String[] args) { float af = 5.234556f; // 下面将看到af的值发生改变 System.out.println(af); double a = 0.0; double c =Double.NEGATIVE_INFINITY; float d = Float.NEGATIVE_INFINITY; //可以看到float和double的负无穷大是相等的 System.out.println(c == d); //0.0除以0.0将出现非数 System.out.println(a / a); //两个非数之间是不相等的 System.out.println(a / a == Float.NaN); //所有的正无穷大都是相等的 System.out.println(6.0 / 0 == 555.0 / 0); //附属除以0.0 得到负无穷打 System.out.println(-8 / a); } } ============================================== ❯ cd "f:\Java\chapter3\" ; if ($?) { javac TestFloat.java } ; if ($?) { java TestFloat } 5.234556 true NaN false true -Infinity
布尔型对应只有一个boolean类型,用于表示逻辑上的真或假。
其它基本类型不能转换成boolean类型
Java中不同基本类型的值可以在不同类型之间转换,Java提供的7个数值型之间可以相互转换,有两种转换方式:自动类型转换、强制类型转换
如果系统支持把某个基本类型的值直接赋值给另一种基本类型的变量,则这种方式称为自动类型转换。
当把一个表数范围小的数值会变量直接赋值给另一个表数范围大的变量时,系统可以进行自动类型转换。
满足上述情况下,Java的所有数值型变量之间可以进行类型转换。
当把任何基本类型和字符串进行连接运算时,基本类型的值将自动类型转换位字符串类型。(字符串类型不再时基本类型,是引用类型)
public class AutoConversion { public static void main (String[] args){ int a = 6; //int可以自动转换为float类型 float f = a; //下面价格你会输出6.0 System.out.println(f); //定义一个byte类型的整数变量 byte b = 9; //如果将其赋值给char类型,会出现错误,因为byte类型不能自动转换为char double d = b; //下面将输出9.0 System.out.println(d); } } ❯ cd "f:\Java\chapter3\" ; if ($?) { javac AutoConversion.java } ; if ($?) { java AutoConversion } 6.0 9.0
(targetType)value
public class NarrowConversion { public static void main(String[] args){ int iValue = 232; //强制把一个int类型的值转换为byte类型的值 byte bValue = (byte)iValue; //将输出-23 System.out.println(bValue); double dValue = 3.98 ; //强制把一个double转换为int int tol = (int)dValue; //将输出3 System.out.println(tol); } } ================================ javac NarrowConversion.java } ; if ($?) { java NarrowConversion } -24 3
所有的数字在计算机底层都是以二进制进行存储,计算机以补码的形式存储所有整数。然后就是看如何截断位数,就可以砍断溢出后输出的数是什么
当一个算数表达式中包含多个基本类型的值时,整个算数表达式的数据了剋行将会发生自动提升。
如果希望把基本类型转换为对应字符串,可以把基本类型将一个空字符串进行连接
public class PrimitiveAndString { public static void main(String[] args){ //下面代码是错误的,不能将整形直接赋值给字符串 //String str1 = 5; //一个基本类型值和字符串进行连接运算时,基本类型值自动转换为字符串 String str2 = 3.5f + ""; //下面将输出3.5 System.out.println(str2); //下面语句将输出Hello!34 System.out.println("Hello!"+3+4); } } =================== ❯ cd "f:\Java\chapter3\" ; if ($?) { javac PrimitiveAndString.java } ; if ($?) { java PrimitiveAndString } 3.5 Hello!34
能够指定直接量的通常只有三种类型:基本类型、字符串类型和null类型
运算符是一种特殊的符号,用以表示数据的运算、赋值、比较等。
加、减、乘、除和求余。
加法运算符,字符串拼接
求余运算符,求余运算的结果不一定总是整数,它的计算结果使用第一个运算数除以第二个运算数,得到一个整除结果后身下的值就是余数。
自加运算符,单目运算符,可以出现在操作数的左右两边:
自减运算符
借助java.lang.Math类的工具方法完成复杂的数学运算
public class TestMath { public static void main(String[] args){ //定义常量a为3.2 double a = 3.2; //求a的5次方,并加过你计算结果赋值b double b = Math.pow(a, 5); //print b System.out.println(b); //Find the square root of A double c = Math.sqrt(a); //print c System.out.println(c); //cal random number and return a number between 0 and 1 double d = Math.random(); //print d System.out.println(d); // cal sin(1.57) double e = Math.sin(1.57); //print e System.out.println(e); } } =========================== cd "f:\Java\chapter3\" ; if ($?) { javac TestMath.java } ; if ($?) { java TestMath } 335.5443200000001 1.7888543819998317 0.8853359248243061 0.9999996829318346
赋值运算符用于为变量指定变量值。
Java支持的位运算符有下述7个:
对于>>、>>>、<<三个移位运算符只能对byte、short、char、int、long等整数类型进行运算
比较运算符用于判断两个变量或常量的大小,比较运算的结果时一个布尔值
逻辑运算符用于操作两个布尔类型的变量或常量
三目运算符只有:?:
语法如下:
(expression) ? if-true-statement:if-false-statement