到底学个啥啊~
Java肯定是要学的,一门如此优秀的面向对象语言,使用范围也很广很广,学校还没开课,先当预习一下。至于有同学说,你这又是学C/C++,又是学Python,现在又搞一个Java,你是要上天呀,学这么多又学的浅有什么用吗?霍霍,肿么没用了?C/C++适合刷题,Python只是最近在弄爬虫这块,好歹也写了几个实用的爬虫出来了。至于Java呢?到目前我想不到对我有什么实际的用处,我尝试去刷题,但是不是很习惯,比如字符串处理,在C++中用String定义一个字符串,它可以直接当作数组来用,而Java似乎不能这样做…各种方法各种类有点难记。另外Java也可以写爬虫,但还没有学那么深,就不想那么多了。
我在B站学Java
,推荐尚学堂Java 300集。其实看书也听实在的,但是有一个人讲肯定是更加容易理解一些的(当然,排除念PPT的老师…),想起来在B站看过不少的视频了…此乃真
学习网站,谁说Bilibili不好我和谁急了。此外,由于Java本就是基于C语言开发的,所以面向过程的东西我大概都选择性跳过了,感觉问题不是很大…好吧,从面向对象开始吧,万物皆对象。
类与对象的概念
在生活中随处可见的有男生和女生,其“男”和“女”便是类
,而说到某一个人,人们总会想到她是一个女生(属于女生这个类),同时她的名字、年龄、身高等等(对象的属性)。也就是每一个人都是独一无二的对象
,这便是生活中的类与对象…
在Java中其实没太大的区别,比如下段代码中首先是导入了一个包,其中有一个public
修饰的类Stu01
,这便是java中的类。而ob01
就是Stu01
的实例,也就是对象。类的实例化可以引用类的属性和方法。
类可以看成是创建对象的模板。
对象可以看作类的实例化
上面说的呢?其实也就是一种造车
,我有一张图纸(类),我根据这张图纸造了一辆车(对象)…对象有自己的属性和行为(方法),其实Java的类就好比C语言中的结构体的升级版…
1 | public class Study01 { |
什么是方法?
类是方法和属性的集合,至于属性不就是在类里面定义的成员变量吗?那方法呢?方法是什么?方法有什么要点呢?
先看方法的概念:Java方法是语句的集合,它们在一起执行一个功能。这不就是C语言中的函数
吗?
再看方法的定义:
1 | 修饰符 返回值类型 方法名(参数类型 参数名){ |
等等,这就是C语言的函数!!!
其实,Java的方法和C语言的函数很相似,只不过C语言的函数定义没有修饰符
一说。
规则:方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头写,不使用连接符。例如:addPerson
另外类的名字应该以大小字母开头,好吧,这写规则在学C语言的时候没听到过,这里还是记住为好,代码规范很重要。
1 | public class Study02 { |
上面给出了四个方法,分别用public private protected static
修饰,其中static
修饰的方法可以不用实例化就能激活的方法。就好比咱们在C语言中写完主函数之后又写了一个自定义函数,我们可以在主函数或者其他函数中来调用这个函数。而其他三个方法需要实例化才能激活,也就是说咱们要先有对象才能有行为…就是这个样子了。
构造方法
构造方法也称构造器,它本质上还是一个方法,构造方法就是用来new
对象的。
每一个Java程序都有构造方法,像前面那个程序没写构造方法,但是JVM会自动生成一个空构造方法。其实构造方法和普通方法的区别只是在于构造方法没有返回值,它的名字和类名一样,它的作用是构建对象。
方法的重载(Overload)
Java中同名的方法可以有多个,只要参数不一样就好了,Java会自动判断用哪个方法。比如下面的程序,它有两个构造方法Study03()
,还有两个test()
方法,在新建那两个对象的时候可以看到,我们给a
和b
赋值是不一样的,第一个是用的空构造方法,第二个是带参数的构造方法,可以看到第二种会更加简便,所以我们一般都会自己写构造方法,而不是用空构造方法。其中的this
是代指这个对象,就是说this
就代表的ob02
。
同样的调用test()
方法的时候,加了参数和不加参数的结果完全不一样,说明那是不同的两个方法。其实在使用out
对象的方法的时候,它有很多选择,在其中可以发现有许多许多print()
方法,只是参数不一样,可见重载还是挺常见的。
1 | public class Study03 { |
对象创建的过程
构造方法
是创建Java对象的重要途径,通过new关键字
调用构造器时,构造器也确实返回该类的对象,但这个对象并不是完全由构造方法负责创建。创建一个对象分为如下四步:
1.分配对象空间,并将对象成员变量
初始化为0或空
2.执行属性
值的显示初始化
3.执行构造方法
4.返回对象的地址给相关的变量
this的本质
this
的本质就是创建好的对象的地址
,由于在构造方法调用前,对象已经创建。因此,在构造方法中也可以使用this
代表当前对象
。
this
最常的用法:
1.在程序中产生二义性
之处,应使用this来指明当前对象
;普通方法中,this
总是指向调用该方法的对象。构造方法中,this总是指向正要初始化的对象。
2.使用this
关键字调用重载的构造方法,避免相同的初始化代码。但只能在构造方法中用,并且必须位于构造方法的第一行
。
this不能用于static方法中
使用this关键字的示例
1 | public class Study07 { |
static关键字
在类中,用static
声明的成员变量为静态成员变量,也称为类变量。 类变量的生命周期和类相同,在整个应用程序执行期间都有效。它有如下特点:
1.为该类的公用变量,属于类,被该类的所有实例共享,在类被载入时被显式初始化。
2.对于该类的所有对象来说,static成员变量只有一份。被该类的所有对象共享!!
3.一般用“类名.类属性/方法”来调用。(也可以通过对象引用或类名(不需要实例化)访问静态成员。)
4.在static方法中不可直接访问非static的成员。
1 | public class Test { |