文末
我将这三次阿里面试的题目全部分专题整理出来,并附带上详细的答案解析,生成了一份PDF文档
- 第一个要分享给大家的就是算法和数据结构
- 第二个就是数据库的高频知识点与性能优化
- 第三个则是并发编程(72个知识点学习)
- 最后一个是各大JAVA架构专题的面试点+解析+我的一些学习的书籍资料
还有更多的Redis、MySQL、JVM、Kafka、微服务、Spring全家桶等学习笔记这里就不一一列举出来
//当张三在购物的时候输出"张三在购物"
//当李四在购物的时候输出"李四在购物"
System.out.println(this.name + “在购物”);
}
}
1.2.2 实例变量的访问(不带static的变量)
public class helloworld {
public static void main(String[] args) {
//访问"当前对象"的num属性
//System.out.println(num); //编译错误(因为num是一个实例变量,需要"引用."的方式访问)
//如何访问num?
//创建一个对象
ThisTest tt = new ThisTest();
System.out.println(tt.num);
}
}
class ThisTest{
//实例变量
int num = 10;
}
1.3 静态方法
1)访问的时候采用 类名.方法名,不能用this;
2)静态方法不能"直接"访问实例变量和实例方法;(实例变量和实例方法都需要对象的存在);
3)静态方法中没有this,也就是说"当前对象"不存在,自然也无法访问当前对象的实例变量和实例方法(this代表的是当前正在执行这个动作的对象);
4)静态方法,既可以采用类名的方式访问,也可以采用应用的方式访问,但是即使采用引用的方式访问,实际上执行的时候和引用指向的对象无关,还是默认成“类名.”的方式访问,且会产生警告,但不会产生空指针异常;
1.4 特例:实例方法中实例方法的访问
实例方法和静态方法的访问 比较
public class ThisTest{
public static void main(String[] args){
//ThisTest.doSome();
//编译错误(实例方法必须先创建对象,通过引用.的方式访问)如下:
ThisTest tt = new ThisTest();
tt.run();
doSome();//带有static的方法,可以通过类名.的方式直接访问
}
public static void doSome(){
System.out.println(“do some!”);
}
public void doOther(){
System.out.println(“do other”);
}
//特例:实例方法中实例方法的访问
public void run(){
System.out.println(“run execute!”);
doOther();//this.doOther
//这里可以直接写“doOther();”由于是通过run()来访问到doOther的,此时this就是访问run()时的对象
}
}
1.4 实例方法和实例变量的定义和访问的比较
不带有static关键字的方法被称为"实例方法";
不带有static关键字的变量被称为"实例变量";
public class ThisTest{
public static void main(String[] args){
//编译错误
/*System.out.println(name);
doSome();
System.out.println(this.name);
this.doSome();*/
//编译通过
ThisTest tt = new ThisTest();
System.out.println(tt.name);
tt.doSome();
}
//实例变量
String name;
//实例方法
public void doSome(){
System.out.println(“do some!”);
}
}
1.5 this的作用领域
1)可以使用在实例方法中,代表当前对象【语法格式:this】
2)可以使用在构造方法中,通过当前的构造方法调用其他的构造方法【语法格式:this(实参)】;
3)this()这种语法只能出现在构造方法的第一行;
使用在构造方法中,通过当前的构造方法调用其他的构造方法的代码如下:
public class helloworld {
public static void main(String[] args) {
Date d = new Date();
System.out.println(d.getYear() + “-” + d.getMonth() + “-” + d.getDay());
Date a = new Date(2021,1,3);
System.out.println(a.getYear() + “-” + d.getMonth() + “-” + d.getDay());
}
}
class Date{
private int year;
private int month;
private int day;
public Date(int year, int month, int day) {
this.year = year;
this.month = month;
this.day = day;
}
public Date() {
//需求:当程序员调用以下无参数的构造方法的时候,默认创建日期为1970.1.1
/*this.year = 1970;
this.month = 1;
this.day = 1;*/
//以上代码可以通过调用另一个构造方法来完成
//但前提是不能通过创新新的对象。以下代码表示创新了一个新的对象
//new Date(1970.1.1);
//需要采用以下的语法来完成构造方法的调用
this(1970,1,1);
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
public int getMonth() {
return month;
}
public void setMonth(int month) {
this.month = month;
}
public int getDay() {
return day;
}
public void setDay(int day) {
this.day = day;
}
}
1.6 两种方法调用 以及 实例变量的访问 的完整/省略写法
public class Test{
//没有static的变量
int i = 10;
//带有static的方法
public static void doSome() {
System.out.println(“do some!”);
}
//没有static的方法
public void doOther() {
System.out.println(“do other!”);
}
//带有static的方法
public static void method1() {
//调用doSOme(带有static的方法)
//完整方法的调用
技术学习总结
学习技术一定要制定一个明确的学习路线,这样才能高效的学习,不必要做无效功,既浪费时间又得不到什么效率,大家不妨按照我这份路线来学习。
最后面试分享
大家不妨直接在牛客和力扣上多刷题,同时,我也拿了一些面试题跟大家分享,也是从一些大佬那里获得的,大家不妨多刷刷题,为金九银十冲一波!
1715650957515)]
[外链图片转存中…(img-k7WWrCwY-1715650957516)]
最后面试分享
大家不妨直接在牛客和力扣上多刷题,同时,我也拿了一些面试题跟大家分享,也是从一些大佬那里获得的,大家不妨多刷刷题,为金九银十冲一波!
[外链图片转存中…(img-j46eoLPn-1715650957516)]
[外链图片转存中…(img-pXJGZinh-1715650957517)]