3. java基本程序设计结构

3.3 数据类型

整数中可以使用下划线,以便于阅读


整型值和布尔值之间不能进行相互转换。


3.4 变量

注意初始化

常量使用 final 修饰符,const是Java保留关键字,目前没有使用

3.5 运算符

默认情况下,虚拟机设计者允许中间计算结果采用扩展的精度,
但是对于strictfp 关键字标记的方法,必须使用严格的浮点计算来产生理想的结果。

默认情况下,不会产生溢出,严格的计算可能产生溢出。


StrictMath确保在所有平台上得到相同的结果


强制类型转化(int)

Math.round() 舍入运算,得到最接近的整数,返回long 类型;

布尔类型与其他类型的转换可以使用条件表达式。

java中的字符串 是不可变的。(java设计者认为共享带来的效率远远胜过提取、拼接字符串带来的低效率)


检测字符串是否相等(使用equals方法,如果忽略大小写 equalsIgnoreCase)

虚拟机共享字符串常量

空串是对象,长度为0


代码点和代码单元(辅助字符需要一对代码单元表示)

  • UTF-8 中的代碼單元由 8 個位元組成。
  • UTF-16 中的代碼單元由 16 個位元組成。
  • UTF-32 中的代碼單元由 32 個位元組成。
  • GB18030 中的代碼單元由 8 個位元組成。
  • UTF-8

    在 UTF-8 中,每個代碼點包含多個代碼單元是常見的情況,因為其代碼單元較小。代碼點可以對應到 1 至 4 個代碼單元。

  • UTF-16

    UTF-16 代碼單元的大小是 8 位元代碼單元的兩倍。因此,純量值小於 U+10000 的任何代碼點會使用單一代碼單元來編碼。

    對於純量值大於或等於 U+10000 的代碼點,每個代碼點就需要兩個代碼單元。在 UTF-16 中,這些成對的代碼單元使用專門的詞彙來表示:「Unicode 代用字組」。

  • UTF-32

    UTF-32 中使用的 32 位元代碼單元大小,足以將所有代碼點編碼為單一代碼單元。

  • GB18030

    在 GB18030 中,每個代碼點包含多個代碼單元是常見的情況,因為其代碼單元較小。代碼點可以對應到 1 至 4 個代碼單元。



s.charAt(n)返回的是位置n的代码单元

int codePointAt(int index)  从指定位置开始或结束的代码点

int offsetByCodePoints(int startIndex, int cpCount)   从指定位置开始,偏移cpCount的代码点索引


使用StringBuilder 加快构建字符串,添加时调用append,最后调用toString

StringBuffer允许多线程编辑


3.7 输入输出

3.7.1 读入输入

Scanner in = new Scanner(System.in);

in.nextline()
in.nextInt
...


为了读取密码:java.io.Console 6

Console cons = System.console();
String username = cons.readLine("User name: ");
char[] passwd = cons.readPassword("Password: ");


3.7.2 格式化输出

日期输出:
n$表参数索引,从1开始
System.out.printf("%1$s %2$tB %2$te, %2$tY", "Due date:", new Date());

或者使用 < 表示前一个参数

System.out.printf("%s %tB %<te, %<tY", "Due date:", new Date());

3.7.3 文件输入与输出

Scanner in = new Scanner(Paths.get("myfile.txt"));

文件输出:
PrintWriter out = new PrintWriter("myfile.txt");


3.8 控制流程


不能在嵌套的两个块中声明同名变量



switch语句中的case可以是char、byte、short、int、
从se7开始还可以是字符串字面量(常量)



带标签的break语句跳出多重循环
实际上可以用于任何语句;只能跳出语句块!

3.9 大数值

java.math   BigInteger and BigDecimal



3.10数组


基本类型应手动初始化,


创建数组时 有默认值



for each语句

for (variable : collection) statement
collection为数组或者实现了Iterable接口



数组的初始化:

int[] smallPrimes = { 2, 3, 5, 7, 11, 13 };

匿名数组:
new int[] { 17, 19, 23, 29, 31, 37 }



长度为0的数组:

new int[0];



Arrays.of 函数用于进行数组拷贝


遍历二维数组:
for (double[] row : a)
for (double value : row)
do something with value


快速打印:Arrays.deepToString



java实际上没有多维数组,只有一位数组,多维数组被解释为数组的数组




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值