Java白皮书十一个关键术语

  1. 简单性:剔除C++中许多很少使用、难以处理、容易混淆的特性;另一个方面是小
  2. 面向对象:将重点放在数据和数据接口上
  3. 分布式:丰富例程库,处理协议,应用程序通过URL打开和访问网络上的对象。(分布式是一种架构模式,是将公有模块进行提取,构建成单独的模块,部署在不同服务器上进行调用
  4. 健壮性:健壮性体现在java异常处理机制  java把c++里面很多警告变成错误 ,这样设计的原则是为了让劣质代码不能写出来
  5. 安全性:Java设计成能够防范各种攻击
  6. 体系结构中立:编译器生成一个体系结构中立的目标文件格式,这是一种编译过的代码,只要有Java运行时系统,这些编译后的代码可以在许多处理器上运行。Java编译器通过生成与特定的计算机体系结构无关的字节码指令来实 现这一特性。精心设计的字节码不仅可以很容易地在任何机器上解释执行,而且还可以动态地翻译成本地机器代码。当然,解释虚拟机指令肯定会比全速运行机器指令慢很多。然而,虚拟机有一个选项,可以将执行最频繁的字节码序列翻译成机器码,这一过程被称为即时编译。
  7. 可移植性:基本数据类型的大小以及有关运算的行为都有明确的说明
  8. 解释型:Java解释器可以再任何移植解释器的机器上直接执行Java字节码
  9. 高性能:
  10. 多线程:多线程可以带来更快的交互响应和实时行为
  11. 动态性:库中可以自由的添加新方法和实例变量,而对客户端没有任何影响。


  • public、private、protected称为访问修饰符,用于控制程序的其他部分对这段代码的访问级别
  • 类名:以大写字母开头的名词。如果名字由多个单词组成,每个单词第一个字母都应该大写(骆驼命名法)
  • 源代码的文件名必须与公共类的名字相同,并用.java做扩展名
  • 文档注释:/**  */
  • 数据类型
  1. Java中没有无符号类型
  2. float的精度6~7有效数字,double有效位数为15位
  3. 表示溢出和出错的情况三个特殊的浮点值:Double.POSITIVE.INFINITY        Double.NEGATIVE.INFINITY         Double.NaN
  4. char类型的值可以表示为十六进制数,范围从\u0000-\uFFFF
  5. 码点:与一个编码表中的某个字符对应的代码值,采用十六进制书写,并加上前缀U+,Unicode的码点可以分成十七个代码平面。第一个代码平面称为基本多语言平面,包括码点U+0000到U+FFFF的经典Unicode代码,其余16个平面的码点为从U+10000到U+10FFFF,包括辅助字符
  6. UTF-16编码采用不同长度的编码表示所有的Unicode码点,在基本多语言平面中,每个字符用16位表示,通常称为代码单元,而辅助字符编码通常为一对连续的代码单元
  • 声明变量名:首单词字母小写,其余单词首字母大写
  • 声明常量名:全部使用大写
  • static final声明类常量,定义位于main方法外部
  • 整数除0会异常,浮点数除0得到正无穷大或NaN
  • 对浮点数舍入  (int)Math.round(x)
  • >>>运算符会用0填充高位,这与>>不同,它会用符号位填充高位,不存在<<<
  • Java字符串就是unicode字符序列,java没有内置的字符串类型,而是在标准库中预定义类String ,编译器让字符串共享,各种字符串放在公共存储池,字符串变量指向存储池中相应位置

码点数量:str.codePointCount(0,str.length())      得到第几个码点:int index = str.offsetByCodePoints(0,i)  int cp = str.codePointAt(index)  码点数组:int []array = str.codePoints().toArray() 转为字符串  String s = new String(array, 0, array.length



java.lang.StringBuilder
StringBuilder()
int length()
StringBuilder append(String s/char c)
StringBuilder appendCodePoint(int cp)
void setCharAt(int i, char c)
StringBuilder insert(int offset, String str/char c)
StringBuilder delete(int startIndex, int endIndex)
String toString()


  



//从控制台读取用户名、密码 
Console c = System.console();
String username = c.readLine("User name:");
c.printf("user:"+username+"\n");
char []passwd =c.readPassword("Password:");
c.printf(String.valueOf(passwd));


//文件的输入和输出
Scanner scanner = new Scanner(Path.of("myfile.txt"), StandardCharsets.UTF_8);
PrintWriter out = new PrintWriter("myfile.txt",StandardCharsets.UTF_8);


  

  • 静态  String message = String.format("hello %s next year you will be %d",name, age)
  • Java不能再嵌套的两个块中声明同名变量,否则无法通过编译
  • switch  case标签可以为:1:char byte short int 的常量表达式  2:枚举类  3:字符串字面值

 



java.math.BigInteger
BigInteger add(BigInteger other)
BigInteger substract(BigInteger other)
BigInteger multiple(BigInteger other)
BigInteger divide(BigInteger other)
BigInteger mod(BigInteger other)
BigInteger sqrt()
int compareTo(BigInteger other)
static BigInteger value of(long x)

Bigdecimal add(Bigdecimal other)
Bigdecimal substract(Bigdecimal other)
Bigdecimal multiple(Bigdecimal other)
Bigdecimal divide(Bigdecimal other Rounding Mode mode)
int compareTo(Bigdecimal other)
static Bigdecimal valueOf(long x, int scale
BigDecimal用scale()表示小数位数
BigDecimal的stripTrailingZeros()方法,可以将一个BigDecimal格式化为一个相等的,但去掉了末尾0的BigDecimal
BigDecimal n = new BigDecimal("12.75");
BigDecimal m = new BigDecimal("0.15");
BigDecimal[] dr = n.divideAndRemainder(m);
//调用divideAndRemainder()方法时,返回的数组包含两个BigDecimal,分别是商和余数,其中商总是整数,余数不会大于除数。我们可以利用这个方法判断两个BigDecimal是否是整数倍数:


  •   创建一个数字数组,所有元素初始化为0,boolean数组元素初始化为false,字符串数组,所有字符串初始化为null
  • java.util.Arrays static String toString(xxx [] a) static xxx[] copyOf(xxx[],int end) static xxx[] copyOf(xxx[],int start, int end) static void sort(xxx a[]) static void binarySearch(xxx[] a, xxx v) static void fill(xxx[], xxx v) static boolean equals(xxx[]a, xxx[]b)