目录
目录
一、基础
二、数组
三、面向对象
1、杂项
2、封装
3、构造器(构造方法)
4、继承
5、多态
6、包装类
7、设计模式
1、单例设计模式
8、代码块
9、抽象方法与抽象类
10、接口
11、内部类
2021-12-18更
一、基础
1、命名规范
| 包名 | 全部小写 | xxxyyyzzz |
| 类,接口名 | 大驼峰 | XxxYyyZzz |
| 变量方法名 | 小驼峰 | xxxYyyZzz |
| 常量名 | 全部大写 | XXX_YYY_ZZZ |
2、基本数据类型的长度
| byte | 1字节 | float | 4字节 |
| short | 2字节 | double | 8字节 |
| int | 4字节 | char | 2字节 |
| long | 8字节 | boolean | 1字节 |
3、逻辑运算符注意事项
4、三元运算符
(我爱你)?娶你:分手;
####如果我真的爱你,那么我就娶你,如果是假的就分手把!
5、循环之switch //case必须是常量
二、数组
1、foreach循环遍历数组
public static void main(String[] args) {
double[] arr01 = {1.9, 2.9, 3.4, 3.5};
// 打印所有数组元素
for (double element: arr01) {
System.out.println(element);
}
}
//直接打印的方法
System.out.println(Arrays.toString(arr01));
2.暂时还没有想到。。。。。。
三、面向对象
1、杂项
1、匿名对象
直接new Object().方法,就是不起名字,直接调用。用于一次性使用或者作为参数。
2、成员变量也就是属性,存在于堆空间,有默认值。
局部变量存在于栈空间,没有默认值。
3、方法的重载
在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数
类型不同即可。
4、可变形参
public class test3 {
public static void main(String[] args) {
test("a","b","c");
}
public static void test(String...str){
System.out.println(str[1]); //b
System.out.println(str.length); //3
}
}
5、方法的值传递机制
对于基本数据类型,传入的是实际的数值
对于引用数据类型,传入的是地址值
下面是经典的题,可以试试。
public class test3 {
public static void main(String[] args) {
int a = 10;
int b = 20;
method(a,b); //编写方法使得调换a和b的数值。
}
}
6、将对象作为参数传递给方法,一个比较神奇的设定,你可以把一个的实例塞进去。
7、递归,主要就是递归公式和结束条件两方面。下面写一下n的阶乘~
public class test4 {
public static void main(String[] args) {
System.out.println(jiechen(6));
}
public static int jiechen(int n) {
int flag = 0;
if (n == 1) {
return 1;
} else {
return n * jiechen(n - 1);
}
}
}
8、属性的赋值顺序
①默认初始化 ②显式初始化 ③构造器赋值 ④通过方法调用赋值
9、JavaBean
符合①类是公共的②有一个无参的公共构造器③提供get和set方法
10、面试题:==和equals的爱恨情仇
- == 既可以比较基本类型也可以比较引用类型。对于基本类型就是比较值,对于引用类型
就是比较内存地址 - equals的话,它是属于java.lang.Object类里面的方法,如果该方法没有被重写过默认也
是==;我们可以看到String等类的equals方法是被重写过的,而且String类在日常开发中
用的比较多,久而久之,形成了equals是比较值的错误观点。 - 具体要看自定义类里有没有重写Object的equals方法来判断。
11、static关键字
用来修饰属性、方法、代码块、内部类,被static修饰后,随着类的加载而加载,被所有对象共享
2、封装
下面才是真正的走进java面向对象的大门----封装
封装顾名思义就是把一个东西封存起来,至于是哪些东西呢,肯定是见不得人的东西,把一些复杂的结构封装起来,只对外暴露简单的接口,提高了系统的可扩展性和可维护性。
下面的表懒得手打,就直接拉过来了
2021-12-18AM更
3、构造器(构造方法)
1、构造器就是用来new对象的,并且可以给对象初始化(比如让她天生丽质來),每个类都会提供一个空参构造器,当然你如果不满意可以重载若干个构造器,当你重载后,默认提供的就会偷偷的跑掉。根据习惯,重载时再补上一个空参构造器。需要注意的是,继承时构造器不会被子类继承。
2、如果一个类中声明了n个构造器,则最多有n - 1个构造器中使用了"this(形参列表)"
在类的一个构造器中,最多只能声明一个"this(形参列表)"
4、继承
子承父业,发扬光大,说的就是继承后,子类比父类的功能更加强大丰富,减少了代码的冗余,毕竟爸爸打下的天下,我为何还要自己打一遍,那不是造反呢。继承的出现为后面的多态埋下了伏笔。当然需要注意的是,不要为了实现父类一点点的功能而去继承,不值得。
1、继承后获得了父类的属性方法,当然不包括private的属性方法
2、使用extends关键字,不能多继承。
3、方法的重写(与上面的方法重载放一起是面试重点)
- 方法名与参数列表保持一致
- 返回值类型不能大于父类
- 权限修饰符不能小于父类
- 抛出的异常不能大于父类
- 用时声明为为static的
4、关于继承后构造器的问题
- 子类中所有的构造器默认都会访问父类中空参构造器
- 当父类中没有空参数的构造器时,子类的构造器必须通过this(参数列表)或者super(参数列表)语句指定调用本类或者父类中相应的构造器。同时,只能”二选一”,且必须放在构造器的首行
- 如果子类构造器中既未显式调用父类或本类的构造器,且父类中又没有无参的构造器,则编译出错
5、多态
1、定义:父类的引用指向子类的对象
Person person = new Son();
2、前提条件:①需要存在继承或者实现关系 ②有方法的重写
3、成员变量不具备多态。
4、instanceof方法,判断前者是否是后者的实例或者子类的实例
jiayiing instanceof Person //true
5、向上转型,向下转型。
6、包装类
1、java设计之初就是一个面向对象的编程语言,然而基本数据类型的出现,就让它变得不那么面向对象,包装类的出现就是为了解决这个问题。
2、接下来就是涉及到基本数据类型,包装类以及String之间相互的转换
①基本数据类型<===>包装类
这里有自动装箱与自动拆箱
②基本数据类型<===>String
public static void main(String[] args) {
int a = 5;
String str01 = 5+"";
String str02 = "6";
int i = parseInt(str02);
}
7、设计模式
1、单例设计模式
单例设计模式就是只会产生一个对象实例,根据生成的时间又分为饿汉式和懒汉式
8、代码块
9、抽象方法与抽象类
1、含有抽象方法的类一定是抽象类,用abstract修饰。抽象类是被用来继承,抽象类不能被实例化,继承后需要重写抽象方法。
10、接口
1、接口(interface)是抽象方法和常量值定义的集合。
2、 接口中的所有成员变量都默认是由public static final修饰的。
接口中的所有抽象方法都默认是由public abstract修饰的。
11、内部类
目前几乎用不到,对于我来说,顾不进行介绍



