先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
正文
-
在Java里面,声明类需要使用
public
进行修饰,类名和文件名必须保持一致。一个.java
文件 有一个public
类。 -
Scala中没有
public
关键字,默认就是公共的,一个.scala
中可以写多个类。声明类时不能加public
,会报错。类名不要求和文件名一致。 -
成员需要Java Bean规范的
getter
和setter
方法的话可以加@BeanProperty
相当于自动创建,不需要显式写出。 -
给成员属性赋初始值使用
_
,值类型的值0
,引用则是null
。定义常量的话不能用_
。
访问权限
-
Java 中,访问权限分为:
public
,private
,protected
和默认
-
Scala 中属性和方法的默认访问权限为
public
,但 Scala 中无 public 关键字,不用显式声明。 -
private
为私有权限,只在类的内部和伴生对象中可用。 -
protected
为受保护权限,同类、子类可以访问,同包无法访问。 -
private[包名]
增加包访问权限,包名下的其他类也可以使用
创建对象
val 或者 var 对象名 [: 类型] = new 类型()
-
val 修饰对象,不能改变对象的引用(内存地址),可以改变对象属性的值。
-
var 修饰对象,可以修改对象的引用和修改对象的属性值
构造器
Scala 构造对象也需要调用构造方法,构造器包括主构造器
和辅助构造器
。
class 类名(形参列表) { // 主构造器
// 类体
def this(形参列表) { // 辅助构造器
}
def this(形参列表) { //辅助构造器可以有多个...
}
}
举个栗子:
object Test05_Constructor {
def main(args: Array[String]): Unit = {
val student = new Student1()
student.Student1()
val student1 = new Student1("王五")
val student3 = new Student1("李四",21)
}
}
// 无参的主构造器
class Student1(){
var name: String= _
var age: Int = _
println("1.主构造方法被调用 ")
// 声明辅助构造方法 必须直接或间接的调用主构造器
def this(name: String){
// 调用主构造器
this()
println("2.辅助构造方法 一 ")
this.name = name
println(s"name: $name age: $age")
}
def this(name: String,age: Int){
// 间接调用主构造器
this(name)
println("3.辅助构造方法 二 ")
this.age = age
println(s"name: $name age: $age")
}
def Student1(): Unit = {
println("一般方法被调用,不是构造方法!!")
}
}
特点说明:
-
主构造器在类定义上,创建对象最先调用的构造器。
-
辅助构造器用
this
定义,可以有多个。 -
辅助构造方法不能直接构建对象,必须直接或者间接调用主构造方法
-
构造器调用其他另外的构造器,要求被调用构造器必须提前声明。
-
定义和类同名的方法,就是一个普通方法。
主构造器参数说明
-
主构造器函数的形参包括三种类型:
未用任何修饰
、var
修饰、val
修饰 -
不加参数列表相当于为空,
()
可以省略。 -
未用任何修饰符修饰,这个参数就是一个局部变量
-
var
修饰参数,作为类的成员属性使用,可以修改,val
修饰参数,作为类只读属性使用,不能修改
举个栗子:
class Student2(var name: String,var age: Int)
//主构造器 无修饰
class Student3( name: String, age: Int){
def printInfo(): Unit ={
println(s"student3: name = $name, age = ${age}")
}
}
class Student4(val name: String,val age: Int)
class Student5(var name: String,var age: Int){
var school: String = _
def this( name: String, age: Int,school: String){
this(name,age)
this.school = school
}
def printInfo(): Unit ={
println(s"student5: name = $name, age = $age,school = $school")
}
}
=======================================================================
-
Java中的封装:将属性私有化,提供
getter
和setter
,用于赋值和获取值。 -
Scala中的公有属性,底层实际为
private
,并通过get方法obj.field()
和set方法obj.field_=(value)
对其进行操作。所以scala不推荐设置为private。如果需要和其他框架互操作,必须提供Java Bean规范的getter和setter的话可以加@scala.beans.BeanProperty
注解。
class Student {
// 定义属性
private val name: String = "lisi"
// 把对应的符合JavaBean规范的getter和setter创建出来
@BeanProperty
var age: Int = _
var sex: String = _
}
如何定义?
class 子类名 extends 父类名 { 类体 }
-
子类继承父类的属性和方法。
-
Scala和Java一样都是单继承的。
-
继承的调用顺序,父类为先,子类在后。
举个栗子:
class Person(){
var name: String = _
var age: Int = _
println("1.父类的主构造器调用")
def this(name: String,age: Int){
this()
println("2.父类的辅助构造器被调用")
this.name = name
this.age = age
}
def printInfo(): Unit ={
println(s"Person: $name $age")
}
}
// 默认调用Person的无参主构造器
class Student(name: String,age: Int) extends Person(name ,age ){
var stuNo: String = _
println("3.子类的主构造器调用")
def this(name: String,age: Int,stuNo: String){
this(name,age)
this.stuNo = stuNo
println("4.子类的辅助构造器调用")
}
// 重写父类的方法
override def printInfo(): Unit = {
println(s"Student: $name $age $stuNo")
}
}
-
Java中的属性是静态绑定的,方法是在运行时动态绑定的。
-
Scala 中的属性和方法都是动态绑定的。
-
Scala中属性也可以被重写,使用override关键字。
举个栗子:
class Person {
val name: String = "person"
def hello(): Unit = {
println("hello person")
}
}
class Teacher extends Person {
override val name: String = "teacher"
override def hello(): Unit = {
println("hello teacher")
}
}
object Test {
def main(args: Array[String]): Unit = {
val teacher: Teacher = new Teacher()
### 最后
这份《“java高分面试指南”-25分类227页1000+题50w+字解析》同样可分享给有需要的朋友,感兴趣的伙伴们可挑战一下自我,在不看答案解析的情况,测试测试自己的解题水平,这样也能达到事半功倍的效果!(好东西要大家一起看才香)
![image](https://img-blog.csdnimg.cn/img_convert/eb716da5a49d9c4cb34ee85a3667b527.webp?x-oss-process=image/format,png)
![image](https://img-blog.csdnimg.cn/img_convert/79652fb85c49816e61efff0b7ffaa1bb.webp?x-oss-process=image/format,png)
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)**
![img](https://img-blog.csdnimg.cn/img_convert/18ec2753e71fa56d8440cdaa92818156.jpeg)
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
eacher()
### 最后
这份《“java高分面试指南”-25分类227页1000+题50w+字解析》同样可分享给有需要的朋友,感兴趣的伙伴们可挑战一下自我,在不看答案解析的情况,测试测试自己的解题水平,这样也能达到事半功倍的效果!(好东西要大家一起看才香)
[外链图片转存中...(img-FeGedPUz-1713268435584)]
[外链图片转存中...(img-tuMuqX9v-1713268435584)]
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)**
[外链图片转存中...(img-5nkyqjSB-1713268435585)]
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**