Java最全初学Java---面向对象编程基础(对象与类),java后端面试八股文

总结

虽然我个人也经常自嘲,十年之后要去成为外卖专员,但实际上依靠自身的努力,是能够减少三十五岁之后的焦虑的,毕竟好的架构师并不多。

架构师,是我们大部分技术人的职业目标,一名好的架构师来源于机遇(公司)、个人努力(吃得苦、肯钻研)、天分(真的热爱)的三者协作的结果,实践+机遇+努力才能助你成为优秀的架构师。

如果你也想成为一名好的架构师,那或许这份Java成长笔记你需要阅读阅读,希望能够对你的职业发展有所帮助。

image

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

Java中常见类型的默认值:

数据类型默认值说明
byte   short   int   long0整型0
float     double0.0浮点0
char' '空格字符
booleanfalse逻辑假
引用类型null空值

2.2  成员方法


成员方法对应类对象的行为,主要用来定义可执行的操作。

成员方法的定义,语法格式:

访问修饰符 返回值类型 方法名(参数列表){

//方法体

return 返回值;

}

访问修饰符可以是public  private   protected 任意一个也可以不写,主要用来控制方法的访问权限

访问修饰符

publicprotecteddefault(省缺)private
本类可见可见可见可见
本类所在包可见可见可见不可见
其他包中的子类可见可见不可见不可见
其他包中的非子类可见不可见不可见不可见

说明: 方法的定义必须在某个类中,定义方法时如果没有指定权限修饰符,方法的默认访问权限为省缺。

例:

public void SetStudent(int age,String name){

System.out.println(age+name);

}

因为是void类型所以无返回值,如果有返回值,返回值类型必须与方法的返回值类型一致。

2.3 构造方法


在类中存在一种特殊类型的方法,就是构造方法,构造方法与类同名,对象的创建就是通过构造方法完成的。每当类实例化一个对象时,类都会自动调用构造方法。

构造方法的特点:

· 构造方法没有返回值类型也不能定义为void

· 构造方法名称要与本类的名称相同

· 构造方法的主要作用是完成对象的初始化工作,它能把定义对象的参数传给对象成员

构造方法的定义语法:

public class Student {

//构造方法

public Student(){

}

}

public 为构造方法的修饰符

如果类中没有明确定义构造方法,则编译器会自动创建一个不带参数的默认构造方法

构造方法可以为成员变量赋值,并且构造方法可以带有参数。例:

public class Student {

int age;

String name;

String gender;

public Student(int age,String name,String gender){ //构造方法

this.age = age;

this.name = name; //赋值

this.gender = gender;

}

}

**注意:**只有在类中没有定义任何构造方法时,编译器才会创建一个默认无参的构造方法

实例:创建一个学生类,用构建方法为成员变量赋值,并输出打印。

public class Student {

int age;

String name;

String gender;

public Student(int age,String name,String gender){

this.age = age;

this.name = name;

this.gender = gender;

}

void printStudent(){

System.out.println(name+“-”+gender+“-”+age);

}

public static void main(String[] args) {

Student s = new Student(20,“XiaoHua”,“女”);

s.printStudent();

}

}

输出结果:

2.4 局部变量


如果在成员方法内定义一个变量,这个变量就被称为局部变量

局部变量在方法执行时被创建,在方法执行结束时被销毁。局部变量在使用时必须初始化,否则会出现编译错误。例:

编译器直接飘红

2.5 this关键字


先看一段代码:

public class Student {

int age;

String name;

String gender;

public Student(int age,String name,String gender){

age = age;

name = name; //哪个是参数,哪个是成员变量呢?

gender = gender;

}

当类中的成员变量与成员方法中的参数重名时,方法如何使用成员变量呢?

在Java中,规定使用this关键字来代表本类对象的引用,this被隐式的用于引用对象的成员变量和方法。将上述代码改进如下:

public Student(int age,String name,String gender){

this.age = age;

this.name = name;

this.gender = gender;

}

· this关键字引用的就是本类的一个对象,在局部变量或方法参数覆盖了成员变量时,如上面代码情况,就要添加this关键字明确引用的是类成员还是局部变量或方法参数。

· 如果省略this关键字直接写成 name = name ,那只是把参数name赋值给参数变量本身而已,成员变量name的值没有改变,因为参数name在方法的作用域中覆盖了成员变量name。

· this关键字除了可以调用成员变量或成员方法之外,还可以作为方法的返回值,例:

public class Book{

public Book getbook(){

return this; //返回Book类引用

}

}

  1. static关键字

=============

由static 修饰的变量,常量,方法分别称为静态变量,静态常量,静态方法,也被称作类的静态成员。

3.1 静态变量


许多时候不同类之间需要同一个变量进行操作,例如同一个班的学生,学生本身的属性不同,但是所有学生共享一个教室。在Java中如果用static修饰共享的变量,那么该变量就是静态变量

调用静态变量的语法如下:   类名.静态成员

先看这样的一段代码:

public class Student {

int age;

String name;

String gender;

static String classRoom = “307”;

public Student(int age,String name,String gender){

this.age = age;

this.name = name;

this.gender = gender;

}

void printStudent(){

System.out.println(name+“-”+gender+“-”+age);

}

public static void main(String[] args) {

Student s1 = new Student(20,“XiaoHua”,“女”);

Student s2 = new Student(22,“XiaoFang”,“女”);

Student s3 = new Student(23,“XiaoZhang”,“男”);

Student s4 = new Student(24,“XiaoLi”,“男”);

}

}

在这里打断点:

进行调试:

发现静态成员变量不在具体的对象中存在。

静态成员只有一份,被所有的对象共享,当类被卸载时,静态成员才会被销毁。

静态成员变量访问的方式有两种:通过成员访问和直接通过类名访问,**推荐:**类.静态成员变量

3.2 静态方法


如果想要使用类中的成员方法,需要先将这个类进行实例化,但有些时候不想或者无法创建类的对象时,还要调用类中的方法才能够完成,这种情况下可以使用静态方法,调用静态方法格式如下:

类名.静态方法();

例如这段代码:

public class Student {

int age;

String name;

String gender;

static String classRoom = “307”;

public Student(int age,String name,String gender){

this.age = age;

this.name = name;

this.gender = gender;

}

public static String getClassRoom(){ //静态成员方法

return classRoom;

}

public static void main(String[] args) {

System.out.println(Student.getClassRoom());

}

}

利用静态成员方法访问静态成员变量。

**注意:**静态方法不能访问实例变量。

  1. 代码块

=======

4.1 代码块概念及分类


使用 { } 定义的一段代码称为代码块,根据代码块的位置以及关键字,分为以下四种

普通代码块,构造代码块,静态代码块,同步代码块(暂时不谈)

4.2 普通代码块


普通代码块:定义在方法中的代码块。

public static void main(String[] args) {

int a = 10;

System.out.println(a);

}

4.3 构造代码块


构造块:定义在类中的代码块(无任何修饰符),也叫实例代码块,一般用于初始化实例成员变量

public class Student {

int age;

String name;

String gender;

public Student(){

System.out.println(“我是构造方法”);

}

//实例代码块

{

this.age = 20;

this.name = “XiaoHe”;

this.gender = “男”;

}

public void printStudent(){

System.out.println(name+gender+age);

}

public static void main(String[] args) {

Student s = new Student();

总结

三个工作日收到了offer,头条面试体验还是很棒的,这次的头条面试好像每面技术都问了我算法,然后就是中间件、MySQL、Redis、Kafka、网络等等。

  • 第一个是算法

关于算法,我觉得最好的是刷题,作死的刷的,多做多练习,加上自己的理解,还是比较容易拿下的。

而且,我貌似是将《算法刷题LeetCode中文版》、《算法的乐趣》大概都过了一遍,尤其是这本

《算法刷题LeetCode中文版》总共有15个章节:编程技巧、线性表、字符串、栈和队列、树、排序、查找、暴力枚举法、广度优先搜索、深度优先搜索、分治法、贪心法、动态规划、图、细节实现题

最新出炉,头条三面技术四面HR,看我如何一步一步攻克面试官?

《算法的乐趣》共有23个章节:

最新出炉,头条三面技术四面HR,看我如何一步一步攻克面试官?

最新出炉,头条三面技术四面HR,看我如何一步一步攻克面试官?

  • 第二个是Redis、MySQL、kafka(给大家看下我都有哪些复习笔记)

基本上都是面试真题解析、笔记和学习大纲图,感觉复习也就需要这些吧(个人意见)

最新出炉,头条三面技术四面HR,看我如何一步一步攻克面试官?

  • 第三个是网络(给大家看一本我之前得到的《JAVA核心知识整理》包括30个章节分类,这本283页的JAVA核心知识整理还是很不错的,一次性总结了30个分享的大知识点)

最新出炉,头条三面技术四面HR,看我如何一步一步攻克面试官?

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

mg-fUnKRRZl-1715339385103)]

《算法的乐趣》共有23个章节:

[外链图片转存中…(img-ecusuJr4-1715339385103)]

[外链图片转存中…(img-LkQV2RL8-1715339385104)]

  • 第二个是Redis、MySQL、kafka(给大家看下我都有哪些复习笔记)

基本上都是面试真题解析、笔记和学习大纲图,感觉复习也就需要这些吧(个人意见)

[外链图片转存中…(img-myi8ViBQ-1715339385104)]

  • 第三个是网络(给大家看一本我之前得到的《JAVA核心知识整理》包括30个章节分类,这本283页的JAVA核心知识整理还是很不错的,一次性总结了30个分享的大知识点)

[外链图片转存中…(img-8eydva1t-1715339385104)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 12
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值