System.out.println('h'); //output h
//需要记住的几个字符常量值
'0' = 48
'A' = 65
'a' = 97
原码 反码 补码
- (+)=0 (-)=1正数的反码与原码相同;负数的反码与原码符号位相同,数值位相反正数的补码与原码相同;负数的补码在反码的基础上加1
- 整数
byte 1short 2int 4 (default)long 8浮点数
float 4double 8 (default)字符
char 2布尔
boolean 1
类、接口、数组
类型转换默认从小到大转换byte,short,char—int—long—float—double
byte b = (byte) 130; //-126 //130转换为补码(正数原码反码补码相同),截取byte一个字节八位数,再恢复为原码运算符
//ex 1 int a = 4; int b = ++a; //a=5, b=5 int c = a++; //a=6, c=5 //ex 2 short s = 1; s = s + 1; //有问题,1为int类型 s += 1; //没有问题 等价于 s = (s的数据类型)(s + 1); //^异或一个数据针对另一个数据位异或两次,该数不变 //ex 3: 交换两个变量 int a = 10; int b = 20; a = a^b; //30 20 b = a^b; //30 10 a = a^b; //20 10 //<< 把<<左边的数据乘以2的移动次幂,右边补0 //>> 把>>左边的数据除以2的移动次幂,左边补0/1看最高位是0/1 //>>>无论最高为是0还是1,左边补齐0 //ex 4 3<<2 = 3* 2^2 = 12 24>>2 = 24/ 2^2 = 6键盘输入
import java.util.Scanner; Scanner sc = new Scanner(System.in); int x = sc.nextInt(); String s = sc.nextLine();流程控制语句
switch(week) { //byte short int char string
case 1:
System.out.println("星期一");
break;
default: //default后面的break可以省略
System.out.println("你输入的数据有误");
break;
}
break: 一个语句智能跳出一层循环continue: 跳出一次循环,进入下一次执行 数组
//动态静态不能同时进行
int[] arr = new int[3]; //动态初始化
int[] arr = new int[]{1,2,3}; //静态初始化
int[][] arr = new int[3][]; //arr[0]输出是null arr[0] = new int[2]; //赋之后是地址值Java的内存分配
栈:存储局部变量,数据使用完毕,就消失,作用在作用域堆:存储所有new出来的
每一个new出来的东西都有地址每一个变量都有默认值数据使用完毕后,在垃圾回收器空闲的时候回收
面向对象 类与对象 匿名对象new Student().show();抽象类
- 在一个类中如果有抽象方法,该类必须定义为抽象类Example
- public abstract void eat(){} //错误 抽象方法不能有主体public abstract void eat(); //正确
abstract不能和哪些关键字共存?
- private 冲突final 冲突 static 无意义
implements(继承是extends)特点
成员变量只能是常量没有构造方法成员方法只能是抽象的与类的区别
类与类:继承关系,只能单继承,可以多层继承类与接口:实现关系,可以单实现,也可以多实现接口与接口:继承关系,可以单继承,也可以多继承 内部类
局部内部类访问局部变量必须用final修饰 关键字
private:是封装的一种体现static:被类的所有对象共享
在静态方法中是没有this关键字的可以通过对象名调用,也可以通过类名调用final
修饰的类,不能被继承修饰的方法,不能被重写修饰的变量,是一个常量,不能被重新赋值被final修饰的变量只能赋值一次
代码块
执行顺序:静态代码块 -- 构造代码块 -- 构造方法静态代码块:只执行一次构造代码块:每次调用构造方法都执行 构造方法
可以有return语句:return; 继承
子类不能继承父类的构造方法
子类中所有的构造方法默认都会访问父类中空参数的构造方法子类每一个构造方法的第一条语句默认都是:super();this(...)或者super(...)必须出现在第一条语句上父子都有静态代码块、构造代码块、构造方法,优先执行静态代码块且先父后子 === 父的构造代码块 === 父的构造方法 === 子的构造代码块 === 子的构造方法 多态
前提
有继承或者实现关系有方法重写有父类或者父接口引用指向子类对象成员变量和成员方法都是编译看左边,运行看右边静态方法:编译和运行都看左边,因为静态算不上重写
API常用类 StringBufferappend(...) / delete(...) / replace(...) //表示有参数反转功能:reverse()subString(...) //返回值是string String
String s7 = "abcde",如果s6和s7都是以这种方式命名,那两者的地址值是相等的,==为true字符串拼接用+,也可以用concat按字典顺序比较两个字符串:int compareTo(String str) Integer
Integer.parseInt("100", 2) 二进制到十进制 正则表达式
String regex ="[1-9][0-9]{4,14}";
boolean flag = qq.matches(regex);
Math
int round(float a) 四舍五入(Math.round(...)) Random
int nextInt(int n):返回的是[0,n)范围的内随机数 BigInteger
add() / subtract(...) / multiply(...) / divide(...) BigDecimal
不可变的、任意精度的有符号十进制数,可以解决数据丢失问题 Date/DateFormat
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String s = sdf.format(d); //格式化
Date dd = sdf2.parse(str); //去格式化



