先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
正文
静态块
实例化块
是对现实事务抽象的形容,其实类就是为了封装数据和封装逻辑
对象
类的实例化,调用属性和行为的具体变量
对象数组
Student [] stus = new Student[10];
stus[0] = new Student();
stus[0].no = 1;
stus[0].name = “张三”;
stus[0].sex = “男”;
stus[0].score = 90;
对象数组初始化,和基本数据类型没有区别
但是每⼀个对象数组的格⼦中,都是⼀个对象,但是这些对象初始化都为空(null)
要给对象数组中每个格⼦赋值,需要先new对象 stus[0] = new Student();
java.lang.NullPointerException
⼀般这种异常出现在如果对象为空,但是去调⽤了对象的属性或者⽅法的时候,就会报出异常
成员变量与局部变量
接写在类下⾯的变量 叫做 成员变量(全局变量,属性)
放在⽅法中声明的变量,叫做局部变量
只有同样是成员变量或者局部变量的情况,才会出现同名报错的情况
如果成员变量和局部变量出现同名,就会触发就近原则,哪个近使⽤哪个,⼀般肯定是直接使⽤局部变量
所以,为了防⽌这种情况,我们可以使⽤this关键字
this
this 一般出现在类中,代替是当前对象
this也可以调用构造器
this()表示本地不带参构造器
如果手动在构造器中使用this(),非第一排会报错
public Person(int id, String name, int age){
this(id,name);
this.age = age;
}
public Person(int id, String name){
this(id);
this.name = name;
}
public Person(int id){
this();
this.id = id;
}
public Person(){}
包
其实就是在写代码时候的⽂件夹
包要注意的问题
1、包名全部⼩写
2、包名不要以java,class开头 java.test.xxx
3、包的命名习惯是域名倒着写
基本数据类型与应用数据类型的区别
基本数据类型 值传递
引用数据类型 引用传递
基本数据类型之间的赋值是值传递,相当于就是把值复制粘贴了⼀份
int a = 10;
int b = a;
b = 20;
System.out.println(“a==” + a);
System.out.println(“b==” + b);
对象之间的赋值是引⽤传递:
Student s1 = new Student();
s1.id = 1;
s1.name = “zhangsan”;
s1.score = 90;
Student s2 = s1;
System.out.println(s2.id + " " + s2.name + " " + s2.score);
System.out.println(“=修改了S2对象的值”);
s2.id = 2;
s2.name = “lisi”;
s2.score = 99;
System.out.println(s2.id + " " + s2.name + " " + s2.score);
System.out.println(“-------S1对象的值--------”);
System.out.println(s1.id + " " + s1.name + " " + s1.score);
如果对象之间赋值,不想引起引⽤传递的问题,可以先new不同的对象,然后对象的值再⼀⼀赋值
Student s1 = new Student();
s1.id = 1;
s1.name = “zhangsan”;
s1.score = 90;
Student s2 = new Student();
s2.name = s1.name;
s2.id = s1.id;
s2.score = s1.score;
如果已经有两个不同的对象了,另外⼀个对象再赋值,还是会指向同⼀个地址,之前的引⽤就会被抛弃掉
类的行为
类和类之间的关系
泛化关系 – 继承和实现
依赖关系
一个类的方法中,需要依赖另外一个类
一般实现方式都是:
1.在类中的方法中,有另一个类对象的实例
2.在类中的方法参数中,需要另一个类的对象
public class Boy {
String name;
public void play(Dog d){
d.dogName = “旺财”;
d.happy();
System.out.println(name + “玩耍的很⾼兴~~~”);
}
/*public void play(){
Dog d = new Dog();
d.dogName = “旺财”;
d.happy();
System.out.println(name + “玩耍的很⾼兴~~~”);
}*/
}
组合(聚合)关系
一个类在另一个类中作为属性出现
public class Student {
int id;
String studentName;
double score;
MyClass clazz;
}
public class MyClass {
int id;
String className;
Student [] stus = new Student[50];
}
构造函数(构造方法,构造器)
当new对象的时候会自动调用方法
注意:默认类其实就有一个默认构造方法,只是没有手动调而已
public 类名(){}
可以手动给构造器自己想要的参数
public 类名(int xxx,string xxxx){}
当写了带参构造器会覆盖默认不带参构造器
重载
在同⼀个类中,⽅法名⼀样,但是参数的个数,参数的类型或者不同参数类型的顺序不⼀样,就可以实现重载
public Person(int id, String name, int age){
this.id = id;
this.name = name;
this.age = age;
}
public Person(int id, String name){
this.id = id;
this.name = name;
}
public Person(int id){
this.id = id;
}
public Person(){
}
public void test(int age,String ss){}
public void test(String s,int a){}
如果写了不带参的构造器,会覆盖默认的构造器
最佳实践就是: 如果要写不带参的构造器,那么最好能把默认的构造器写⼀遍
final
final修饰符,可以修饰变量,方法以及类
final修饰变量 表示变量不能再被修改,所以一般意义上我们称呼final修饰的变量为常量,而且注意一个问题,常量必须要有初始值
注意:在Java中,我们一般习惯上声明一个常量 static final ,并且常量名全部大写,static和final都是修饰符,所以先后顺序没有规定static final,final static
final 可以修饰方法,当修饰方法的时候这个方法不能被重写
final可以修饰类,当修饰类的时候,这个类不能再被继承
static
static 可以修饰变量和方法,当被static修饰的时候,这个变量或方法就会被叫做静态变量或静态方法,他们是有别于成员变量和成员方法的
static修饰的变量或方法是属于整个类的,而不是某个对象的
static修饰的变量有唯一值,而且只会生成一次
静态的方法中,只能引用本类的静态的方法或变量,如果要引用其他方法只能用对象进行调用
静态的变量和方法在初始化的时候优先级比成员变量和成员方法高
访问修饰符
1.public 公共的,公开的 完全公开的
2.private 私有的 只能在类的内部使用
3.protected 受保护的
4.默认的
protected和默认的,在同一个包下面和public访问权限一致
在不同的包中,对象不能直接访问protected和默认的修饰的变量和方法
在不同的包中,子类中可以访问protected修饰的变量和方法
Java访问控制法的含义和使用情况
| | 类内部 | 本包 | 子类 | 外部包 |
| :-: | :-: | :-: | :-: | :-: |
| public | √ | √ | √ | √ |
| protected | √ | √ | √ | × |
| default | √ | √ | × | × |
| private | √ | × | × | × |
JavaBean
程序员在经过长期的代码编程过程中,总结出来的经验,如果我们要封装一个类,这个类的作用仅仅就是用来存储数据的,那么可以把这个类封装为Javabean
JavaBean格式:
所有属性全部都是private修饰的
而每个属性都配置getter和setter方法
静态块与实例化块
静态块
static{
}
实例化块
{
}
变量的初始值
类的属性(成员变量),当对象初始化的时候,会自动初始化成员变量的值
整形 0
浮点型 0.0
布尔型 false
字符型 ascll的值
引用型 null
java局部变量不会自动赋初始值
继承
1、extends关键字
2、⼦类继承⽗类
3、⽗类中可以被访问的属性和⽅法都能被⼦类继承
总结
以上是字节二面的一些问题,面完之后其实挺后悔的,没有提前把各个知识点都复习到位。现在重新好好复习手上的面试大全资料(含JAVA、MySQL、算法、Redis、JVM、架构、中间件、RabbitMQ、设计模式、Spring等),现在起闭关修炼半个月,争取早日上岸!!!
下面给大家分享下我的面试大全资料
- 第一份是我的后端JAVA面试大全
后端JAVA面试大全
- 第二份是MySQL+Redis学习笔记+算法+JVM+JAVA核心知识整理
MySQL+Redis学习笔记算法+JVM+JAVA核心知识整理
- 第三份是Spring全家桶资料
MySQL+Redis学习笔记算法+JVM+JAVA核心知识整理
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
没有提前把各个知识点都复习到位。现在重新好好复习手上的面试大全资料(含JAVA、MySQL、算法、Redis、JVM、架构、中间件、RabbitMQ、设计模式、Spring等),现在起闭关修炼半个月,争取早日上岸!!!
下面给大家分享下我的面试大全资料
- 第一份是我的后端JAVA面试大全
[外链图片转存中…(img-VWq6DdPJ-1713621297529)]
后端JAVA面试大全
- 第二份是MySQL+Redis学习笔记+算法+JVM+JAVA核心知识整理
[外链图片转存中…(img-dJYZEPJl-1713621297530)]
MySQL+Redis学习笔记算法+JVM+JAVA核心知识整理
- 第三份是Spring全家桶资料
[外链图片转存中…(img-p5BZLQtl-1713621297530)]
MySQL+Redis学习笔记算法+JVM+JAVA核心知识整理
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-lq7e41Of-1713621297531)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!