数据类型、变量、运算符、字符串、输入与输出
8大数据类型
整型
byte 1字节 byte 和 short 类型主要用于特定的应用场合,例如,底层的文件处理或者需要控制占用存储空间量的大数组,存储范围-128~127
short 2字节 存储范围-32768~32767
int 4字节 存储范围-2147483648~2147483647
long 8字节 长整型数值有一个后缀 L 或 1 ( 如 4000000000L。) 十六进制数值有一个前缀 Ox 或 0X (如OxCAFEL 八进制有一个前缀 0 , 例如, 010 对应八进制中的 8。 很显然, 八进制表示法比较容易混淆, 所以建议最好不要使用八进制常数。
浮点型
float 4字节
double 8字节
double 表示这种类型的数值精度是 float 类型的两倍。
float 类型的数值有一个后缀 F 或 f (例如,3.14F。) 没有后缀 F 的浮点数值(如 3.14 ) 默认为 double 类型。当然,也可以在浮点数值后面添加后缀 D 或 d (例如,3.14D) 。
3个特殊的浮点数值
正无穷大 负无穷大 NaN(不是一个数字)
一个正整数除以 0 的结果为正无穷大。计算 0/0 或者负数的平方根结果为 NaN。
整数被 0 除将会产生一个异常, 而浮点数被 0 除将会得到无穷大或 NaN 结果。
char类型
char 类型原本用于表示单个字符。不过,现在情况已经有所变化。 如今,有些 Unicode字符可以用一个 char值描述,另外一些 Unicode 字符则需要两个 char 值。
char 类型的字面量值要用单引号括起来。
码点( code point) 是指与一个编码表中的某个字符对应的代码值。
boolean 类型
boolean (布尔)类型有两个值:false 和 true, 用来判定逻辑条件 整型值和布尔值之间不能进行相互转换。
基本数据类型:整数,浮点数,布尔型,字符型
非基本数据类型:由基本类型组合的新类型,字符串,数组,类,接口
变量
在声明变量时,变量的类型位于变量名之前。
但 +和 '©’ 这样的符号不能出现在变量名中,空格也不行。变量名中所有的字符都是有意义的,并且大小写敏感。变M名的长度基本上没有限制。
常量
利用关键字 final 指示常量,关键字 final 表示这个变量只能被赋值一次。一旦被赋值之后,就不能够再更改了。习惯上,常量名使用全大写。
经常希望某个常量可以在一个类中的多个方法中使用,通常将这些常量称为类常量。可以使用关键字 static final设置一个类常量。
类常量的定义位于 maiii 方法的外部,在同一个类的其他方法中也可以使用这个常量。而且,如果一个常量被声明为 public,那么其他类的方法也可以使用这个常量。
运算符
使用 strictfp 关键字标记的方法必须使用严格的浮点计算来生成可再生的结果
public static strictfp void main(String[] args)
在 main 方法中的所有指令都将使用严格的浮点计算。如果将一个类标记为strictfp, 这个类中的所有方法都要使用严格的浮点计算。
字符串
String 类的 substring 方法可以从一个较大的字符串提取出一个子串
String greeting = "Hello";
String s = greeting.substring(0, 3);
如果需要把多个字符串放在一起, 用一个定界符分隔,可以使用静态 join 方法
String all = String.join( " / ", "S", "M", "L", "XL" );
可以使用 equals 方法检测两个字符串是否相等。
s.equals(t)
一定不要使用=运算符检测两个字符串是否相等! 这个运算符只能够确定两个字串是否放置在同一个位置上。当然, 如果字符串放置在同一个位置上, 它们必然相等。但是,完全有可能将内容相同的多个字符串的拷贝放置在不同的位置上。
如果虚拟机始终将相同的字符串共享, 就可以使用=运算符检测是否相等。但实际上只有字符串常量是共享的,而 + 或 substring 等操作产生的结果并不是共享的。
空串是一个 Java 对象, 有自己的串长度( 0 ) 和内容(空)。不过, String 变量还可以存放一个特殊的值, 名为 null, 这表示目前没有任何对象与该变量关联
char 数据类型是一个采用 UTF-16 编码表示 Unicode 码点的代码单元。大多数的常用 Unicode 字符使用一个代码单元就可以表示,而辅助字符需要一对代码单元表示。
StringBuilder类,每次需要添加一部分内容时, 就调用 append 方法。
大数值
java.math的BigInteger和BigDecimal类,满足任意长度的整数和浮点数任意精度的运算。使用.valueof()转换为大数值
BigIntger a = BigIntger.valueof(100);
大数值进行运算时,需使用类方法add和multiply等方法
输入与输出
引入了 Console 类实现这个目的。要想读取一个密码, 可以采用下列代码:
Console cons = System.console();
String username = cons.readLine("User name: ");
cha「[] passwd = cons.readPassword("Password:");
文件上输入与输出
要想对文件进行读取,就需要一个用 File 对象构造一个 Scanner 对象,如下所示:
Scanner in = new Scanner(Paths.get("niyflle.txt"), "UTF-8");
要想写入文件, 就需要构造一个 PrintWriter 对象。在构造器中,只需要提供文件名:
PrintWriter out = new Printlulriter('myfile.txt", "UTF-8");