Java基础知识·基本程序结构

  1.  Java 源文件的文件名称必须与公共类的名称相同
  2. main 方法必须声明为 public
  3. 8 种基本类型(priviate type),其中 4 种整型(整数),2 种浮点类型(有小数部分的数值),1 种用于表示 Unicode 编码的字符单元的字符类型 char,和 1 种用于表示真值的 boolean 类型
  4. 4 种整型:byte(1字节),short(2字节), int(4字节), long(8字节)。在 Java 中,整型的范围运行 Java 代码的机器无关
  5. long型数值后有一个后缀 L,十六进制数值有一个前缀0x或0X,八进制有一个前缀0,二进制有一个前缀0b/0 B
  6. 十进制表示中位上的数只能是 0123456789,八进制表示中位上的字只能是 01234567,二进制表示位上的字只能是 01,所以八进制的 010 对应八进制中的 8,而二进制的 0b1000 对应二进制中的 8,这个 8 是表示数值的大小,不是表示的位形式
  7. 2 种浮点型:float(4 字节),double(8 字节),绝大部分采用double类型,float类型有一个后缀 F/f,double类型有一个后缀 D/d
  8. 计算机是如何保存浮点类型的值的?(比如 -3.4,用二进制表示正数和小数分别为 -11.100,而 IEEE 浮点数的表示格式为 -1^s^ x 1.f x (2^e^ - 127),这里单精度浮点型的 8 个字节,其中s占 1 位,f占 23 位,e占 8 位,这样一共就占用32位,浮点数的范围可以用 IEEE 浮点数的表示格式算出。另外,操作系统在实现对浮点数存储和读取的时候,这套转换机制应该是已经嵌入了操作系统内核程序里面了。想知道更多?继续往后面学吧~)
  9. 上述 IEEE 的表示格式中,其中s为符号位,f为有效位,e为指数位。double型的浮点数的 IEEE 表示格式中,1 位符号位,52 位有效位,11 位指数位
  10. Double.isNan(x)
  11. 浮点型不适用与无法接受舍入误差的金融计算中,应该使用 BigDecimal 类
  12. char类型原本用于表示单个字符,但在现在的 Unicode字符,有的可以用一个char值描述,另外一些 Unicode 字符则需要两个char值。所以说char可以表示单个字符的时候,需要注意是相对于什么字符集
  13. '\u0000','\Uffff',\是char中的转义字符,表示十六进制。\b表示退格符,\t表示制表符,\n表示换行符,\r表示回车符,\"表示双引号,\'表示单引号,\\表示反斜杠\。特别注意 Unicode  的转义序列会在解析代码之前就得到处理,可能会产生意料之外的结果,比如注释中的 \u 可能会解析出换行符出来从而导致语法错误
  14. UTF-16 编码采用不同长度的编码表示所有 Unicode 码点(code point)。在基本的多语言级别中,每个字符用 16 位表示,通常称为代码单元(code unit)。在 Java 中,char类型描述了 UTF-16编码中的一个代码单元。强烈建议不要在程序中使用 char类型,除非确实需要处理 UTF-16 代码单元,最好讲字符串作为抽象数据类型处理
  15. Character.isJavaIdentifierStart(x), Character.isJavaIdentifierPart(x)可用来判断 Unicode 字符是否属于 Java 中的“字母”
  16. 整数被 0 除将会产生一个异常,浮点数被 0 除将会得到无穷大或 NAN 结果
  17. 在欧几里得规则里面有这样一条最优规则:余数总是要>=0,使用 Math.floorMod()方法可以在模数为正,被模数不管正负的情况下,都能得到正的余数
  18. 在运算结果比运行速度更重要的场景下,应该使用 StrictMatch 类,它使用“自由发布的 Math 库”实现算法以确保在所有平台上得到相同的结果
  19. Math.sqrt, Math.sin, Math.cos, Math.tant, Math.floorMod, Math.round
  20. 位运算中,int的右操作数要完成模32(4字节)的运算,如1<<35等同于 1<<3,即8
  21. 位运算和&& ||的提前短路不同,位运算不会提前短路
  22. Java 的移位运算符有>>>,但没有<<<,>>>与>>不同的是,使用0填充高位而不是使用1
  23. Java 字符串就是 Unicode 字符序列,x.substring[),String.join(),s.equals(t),比较字符串相等不能使用==,这只是比较地址是否相等而没有比较内容,但是内容相同的完全可以放在 2 个不同的地址上这时候用==就失效
  24. str.length() == 0,str.equals("") if (str == null)
  25. s.length()返回的是 UTF-16编码表示的给定字符串所需要的代码单元数量
  26. index = s.offsetByCodePoint(0, i),s.codePointAt(index),Character.isSupplementaryCodepoint(index) 判断是否是成对字节的码点
  27. int[] codePoints = str.codePoints().toArray(); String str = new String(codePoints, 0, codePoints.length); 得到int型的码点数组,然后使用 String 构建函数转换为字符串表示
  28. 所有的 String 都属于 CharSequence 类型
  29. 构建字符串使用 StringBuilder() 类的 .append() 方法,最后 builder.toString() 得到字符串。StringBuilder 的前身是 StringBuffer,StringBuffer 的效率稍有点低,但是允许以多线程的方式执行添加或删除字符的操作
  30. 读取输入使用 Scanner:Scanner in = new Scanner(System.in); String name = in.nextLine(); String firstName = in.next(); 输入密码使用 Console:Console cons = System.console(); String name = cons.readLine("User name: "); char[] passwd = cons.readPassword("Password: ");
  31. 日期与时间应使用java.time包的方法
  32. 读取文件,就使用 File 对象构造一个 Scanner 对象,Scanner in = new Scanner(Paths.get("myfile.txt", "UTF-8"));
  33. 要写入文件,就需要构造一个 PrintWriter 对象,PrintWriter out = new PrintWriter("myfile.txt", "UTF-8");
  34. while, do while, for, switch break, -Xlint:fallthrough, @SuppressWarnings("fallthrough"), continue
  35. BigInteger(实现了任意精度的整数运算), BigDecimal(实现了任意精度的浮点数运算),BigInteger.valueOf(), .add(), .multiply(), Java 不提供运算符重载功能(但确实为 String 的连接重载了+运算符)
  36. BigInteger add subtract multiply divide mod,BigDecimal add subtract multiply divide mode RoundingMode.HALF_UP(四舍五入)
  37. int[] a; int[] a = new int[100]; int[] a = new int[n]; 数组初始化后长度就不能变化,匿名数组new int[] {17, 19, 23, 29, 31, 37}; int[] a = {17, 19, 23, 29, 31, 37}; 数组长度可以为 0,new int[0],此时与数组为null是不同的
  38. Arrays.copyOf() 数组值拷贝,Arrays.sort(),Arrays.binarySearch(type[] a, type v)
  39. 快速打印二维数组 System.out.println(Arrays.deepToString(x));

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

denglitong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值