1、十进制转换二进制
二进制1100 十进制12
2、生成文档: javadoc HelloWorld.java -d 目标路径
3、在当下文件路径输入cmd,可以直接定位到
4、可以将整型常量直接赋值给byte,short,char等类型变量,而不需要进制转换,只要不超出其范围。
5、制表符:空格\t,换行\n
6、对循环的次数不是很确定,使用while循环
7、int与Integer的基本使用对比
(1)Integer是int的包装类;int是基本数据类型; (2)Integer变量必须实例化后才能使用;int变量不需要; (3)Integer实际是对象的引用,指向此new的Integer对象;int是直接存储数据值 ; (4)Integer的默认值是null;int的默认值是0。
8、冯诺依曼体系:计算机应该由计算器,运算器,存储设备,输入输出设备组成
9、成员变量,直接归类管理,类的直系,在类中,方法外
10、
(1)、成员变量:在类中方法外,在堆内存,随着对象的创建,有默认值
(2)、局部变量:定义在方法中或者方法的声名中,栈内存,随着方法的应用调用,无默认值,必须初始化
11、引用数据类型:数组,类、接口、枚举
12、private关键字可以看作是封装
13、被private修饰只能用在本类中使用
14、公有方法可以调用私有方法
15、类存放在方法区
16、this关键字表示本类对象
17、构造方法之间的相互调用可以使用其他方法已经定义好的条件
18、构造方法不是用来创建对象而是对对象进行初始化的
19、使用this()表示调用本类的构造方法,必须写在第一行(构造方法之间的相互调用)
20、只要创建对象无论调用那一个构造器,构造代码块一定会执行。创建对象时候优先于构造方法执行, 多个构造方法中相同的代码存放到构造代码块中, 节省代码量
21、静态代码
-
给构造代码块加上static关键字就变成了静态代码块, 用于类的初始化, 在类加载的时候就执行, 并且只在类加载的时候执行一次, 一般用于加载驱动。优先执行执行一次
public class Demo {
//构造代码块 { System.out.println("构造代码块执行了"); } //静态代码块 static{ System.out.println("静态代码块执行了"); } public void method(){ //局部代码块 { System.out.println("局部代码块执行了"); } }
22、对象初始化顺序问题
-
成员变量 ==> 构造代码块 ==> 构造方法
-
成员变量和构造代码谁在上面先执行谁
构造方法中可能会用到成员变量
23、静态方法只有一份,可供多个对象使用,在对象创建之前就有,尽量使用类名使用静态方法,类的所有静态成员都储存在类的方法区中
23、静态构造代码块一定优先于非静态(没有静态的构造方法)
//静态和静态比,非静态和非静态比 -
静态成员变量 ==> 静态代码块 ==> 成员变量 ==> 构造代码块 ==> 构造方法
-
静态成员变量和静态代码块(构造代码块)谁写在前面谁先执行
-
24、方法被频繁调用时(工具类),使用静态方法,省去了创建对象的时间
25、静态只能(直接)调用静态,非静态能调用静态成员变量和方法
26、静态中不能用this关键字
27、静态不应该算是重写
28、多态中如果子类重写了父类的方法,调用时使用子类的方法,但无法使用子类特有的方法(成员变量属于静态绑定,成员方法属于动态绑定),静态方法子类无法重写,只有成员方法才看子类
29、final之后不能修改对象的引用,但可以改对象中的内容。修饰成员变量时如果没有初始值,也不会自动赋值。
30、成员变量上面,构造代码块,构造方法
31、静态成员变量,类初始化走两步,静态成员变量静态代码块
32、静态绑定量指编译器绑定,动态绑定是指运行器绑定
33、抽象类继承抽象类不需要实现抽象方法
34、接口中的常量必须是静态,最终的,也就是常量,必须初始化,名字全大写。static ,final可以省略(建议省略)
35、有范围的方法,java中基本包头不包尾
36、如果参数中出现了可变参数,可变参数一定是最后一个(String name,int… arr)
37、非静态必须要用对象名调用,静态调用非静态要创建对象
38、调用静态类的静态方法,类名加方法名
39、私有内部类只能在外部类中使用public class Outer {
//静态内部类
public static class Inner{
//静态内部类的非静态方法
public void innerMethod(){} }
}
public static void main(String[] args) {
//创建内部类对象
Outer.Inner inner = new Outer.Inner();
//调用内部类的方法
inner.innerMethod();
}
40、new thread(){};有大括号表示创建了一个子类对象,否则为父类对象
41、自定义异常有两类,编译时异常继承Exception(在外必须抛出,配套),运行时异常继承继承RuntimeException
throw new MyException();
42、引用数据类型有,类、接口、数组、枚举’
43、多维数据除了最后一个框,其他都是数组类型,最后一个与前面的定义类型匹配
44、一个类的命名前有包名,类找包从上往下找,若导入包在下则认为是导入包中的类(如果使用了*,则上面方法失败,尽量不要用 *)
45、重写eqauls方法public boolean equals(Object obj){
Demo val = (Demo)obj;
if(this.ageval.age){
return true;
}
return false;
}
46、
String s1 = “abc”;
String s2 = “abc”;
System.out.println(s1s2);
true;
String s1 = new String(“abc”);
String s2 = new String(“abc”);
System.out.println(s1==s2);
false;
47、- String s1 = “ab”; -
String s2 = “abc”;
-
String s3 = s1 + “c”;
-
System.out.println(s3 == s2);//false
-
System.out.println(s3.equals(s2));//true
引用型和基础型
48、return和break的区别
49、String中的方法length();数组中的属性length
50、String和date重写了equals方法
51、StringBuffer和String的区别 -
String是一个不可变的字符序列
-
StringBuffer是一个可变的字符序列
-
52、substring不会改变原来的StringBuffer
-
53、+号比append效率低,insert效率也低
-
54、二. StringBuilder
- 定义
StringBuilder功能等同于Stringbuffer, 线程不安全,效率高, 单线程下建议使用StringBuilder - StringBuffer和StringBuilder的区别
- StringBuffer是jdk1.0版本开始的,是线程安全的,效率低
- StringBuilder是jdk1.5版本开始的,是线程不安全的,效率高
55、StringBuilder下由程序员控制线程分离
56、
public static void main(String[] args) {
Integer ii = 100;//自动装箱
int i = ii; //自动拆箱
}
57、
Integer i7 = 197;
Integer i8 = 197;
System.out.println(i7 == i8);//false超过了127
System.out.println(i7.equals(i8));//true
58、迭代器自己的删除方式可控,集合的删除方法不可控
59、treeset集合中的元素需要实现Compareable接口,并且重写其中的比较方法,返回0不存储
60、泛型是将运行时错误提前到编译期
61、比较器和比较方法同时存在时使用比较器方法
62、如果比较的属性相同,但是其他属性不同,会出现覆盖现象
存两个相同的用list
63、treeMap集合的如何获取值,拿key去集合中进行比较,如果当前key和集合中的元素的key比较的集合是0,就认为找到了这个过犹不及,将这个键值对拿出来,返回一个value。
64、每一个Map.Entry中有一个变量为next,负责挂重复的元素,将键相同值不同的Map.Entry挂到一快
65、file.mkdirs可以同时创建多层文件夹
66、重命名是指更改文件的全路径
67、在输出流和文件建立连接的时候就清空
private void test3() throws Exception {
FileInputStream f = new FileInputStream("d:\\宋冬野 - 平淡日子里的刺.mp3");
FileOutputStream f2 = new FileOutputStream("d:\\平淡日子里的刺.mp3");
int len;
byte[] bs = new byte[f.available()];
while((len=f.read(bs))!=-1) {
f2.write(bs,0,len);
}
f.close();
f2.close();
}
68、转换流 本身就是一个标准的字符流
public class TestDemo {
public static void main(String[] args) throws Exception {
//转换流 本身就是一个标准的字符流
InputStreamReader isr = new InputStreamReader(new FileInputStream("demo.txt"),"utf-8");
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("demo2.txt"),"utf-8");
char[] chs = new char[1024];
int len;
while((len=isr.read(chs))!=-1){
System.out.println(new String(chs,0,len));
osw.write(chs, 0, len);
}
isr.close();
osw.close();
}
}
69、一个线程对象只能有一个Start