1JAVA 的特点
简单性 面对对象 分布式 健壮性 安全性 体系结构中立 可移植性
解释性 高性能 多线程 动态性
2 /** … */注释可以用来自动生成文档
3 JAVA基本数据类型
整型:
OB或Ob表示二进制数
JAVA没有无符号的整型
浮点型:
可以十六进制表示浮点数 0.125=2^(-3)=Ox1.0p-3 p表示指数;
溢出跟出错的浮点数值:1 正无穷大 2 负无穷大 3NAN(不是一个数字)
char跟Unicode
Unicode编码表示范围十六进制U0000 - Uffff
Boolean
在JAVA中数值不能代表boolean值
变量初始化
JAVA不区分变量的声明与定义
常量
public static final double it = 1.0; 定义一个类常量(处于main方法的外部)
运算符
整数除0产生异常 浮点数得到无穷大或者NAN
数学函数与常量
用floorMod来求余数 x % y = floorMod(x,y); 解决被除数为零的情况;
Math.PI表示 pi Math.E 表示e
对浮点数四舍五入用 Math.round(x)
位运算符
/ << 左移运算符 >>右移运算符 >>>右移会用0填充高位 不存在<<<
JAVA运算符
JAVA不使用逗号运算符
4 字符串
字符串就是Unicode字符序列 JAVA没有内置的字符串类型
获取子串 str.substring(a,b);
检验字符串是否相等 str.equals(s) 不区分大小写 equalsIgnoreCase
或者用 str.compareTo(s) == 0;
不要用 == 运算符检验相等 这个运算符只能确定两个字符是否放在同一位置上
空串 str.length()==0 或str.equals("") String 可以存null
str.charAt() 得到String 第 i个位置的char
String API
码点:一个编码表中的某个字符对应的代码值 在Unicode标准中,码点用十六进制书写,并加上前缀U+ ,码点可以分为17个代码级别。
构建字符串 StringBuilder 头文件 import java.lang.StringBuilder;
StringBuilder str = new StringBuilder();
str.append();
5 Scanner
格式化输出:可参考c语言版本
用静态的String.format的方法创建格式化的字符串,而不打印输出
String messege = String.format(“Hello,%s,Next year ,you’ll be %d”,name,year);
读写文件 PrintWriter
构造路径 Path.get();
在JAVA中 在嵌套块中定义一个重名变量会导致程序设计出错
switch 中case的标签
类型为 char byte short int 的整型常量
枚举常量
字符串字面值
带标签的break语句 break工作状态;
6 大数值 java.Math*
BigInteger BigDecimal
可以用静态的valueOf的方法将普通的数值转换成大数值
BigInteger it = BigInteger.valueOf(100);
BigInteger
加 减 乘 除 余 分别用 add subtract multiple divide mod方法;
比较大整数相等用 compareTo方法
例如BigInteger转换成 int 用 intValue方法
BigDecimal
BigDecimal it = BigDecimal.valueOf(100.12);
用scale表示小数位数 it.scale(); 如果是负数 如 -2则是末尾有两个零的整数
通过BigDecimal的stripTrailingZeros()方法,可以将一个BigDecimal格式化为一个相等的,但去掉了末尾0的BigDecimal:
setSale的方法进行 四舍五入和阶段
头文件 java.math.RoundingMode
BigDecimal d2 = d1.setScale(4, RoundingMode.HALF_UP); // 四舍五入,123.4568
BigDecimal d3 = d1.setScale(4, RoundingMode.DOWN); // 直接截断,123.4567
对BigDecimal做除法有除不尽的状态 确定精度进行阶段
BigDecimal d3 = d1.divide(d2, 10, RoundingMode.HALF_UP); // 保留10位小数并四舍五入
public class Main {
public static void main(String[] args) {
BigDecimal n = new BigDecimal("12.345");
BigDecimal m = new BigDecimal("0.12");
BigDecimal[] dr = n.divideAndRemainder(m);
System.out.println(dr[0]); // 102
System.out.println(dr[1]); // 0.105
}
}
求商和余数
比较BigDecimal 还要比较scale大小
7 数组
Arrays.toString(array)打印一维数组的每个元素(头文件 java.util.Arrays)
Arrays.deepToString(array)打印二维数组每个元素;
匿名数组赋值:
int []array;
array = new int []{1,2,3};
JAVA允许将一个数组变量拷贝到另一个数组变量上去,这时两个变量将引用同一个数组
有copyOf方法:
int []copidearray=Arrays.copyOf(array,array.length);//第二个参数是数组长度
//如果数组是赋值型,多余的元素将会赋值为零 布尔则赋值为false
排序 Array.sort(array);
多维数组
import java.util.Arrays;
public class learn {
public static void main(String args []){
int [][]array=new int [10][];
for(int i=0;i<10;i++){
array[i]=new int [8];
}
int cnt=0;
for(int i=0;i<array.length;i++){
for(int j=0;j<array[i].length;j++)
array[i][j]=cnt++;
}
System.out.println(Arrays.deepToString(array));
}
}