Java SE基础2

1、Java类的成员变量:

Java类中的成员变量可以是任何一种数据类型(包括基本数据类型和引用数据类型);

在定义成员变量时可以对其进行初始化,如果不进行初始化,Java会使用默认值对其进行初始化,如下图。


成员变量的作用范围是整个类体。

2、Java类的构造方法

在对象的创建时,相当于使用了new + 构造方法来创建对象;

构造方法与类同名且没有返回值,如果自己不定义构造方法,则系统默认为其类提供一个形如类名 () { }的构造方法(将所有基本数据类型初始化为0,引用类型定义为null),如果我们定义了构造方法,系统则不会再为我们提供默认的构造方法。

Java中构造方法在调用时,构造方法中的形参会在栈内存中分配空间,当构造方法调用结束后,改栈空间就会被清理。如下图代码:

在该方法中的main函数中,当生成一个tom对象时,内存中的变化情况入下:


其中在栈内存中,存放了tom对象的引用,以及在构造函数执行过程中生成的栈空间,存放着两个形参的内存,在堆内存中则存放了该对象的成员变量的信息,当构造函数执行结束后,栈空间中的_id与_age的就会被释放掉。

看下面代码中内存的情况:

手画了一下大概的内存情况:


最后main方法执行完成后,堆内存中的start与end也被释放了,然后Java的垃圾回收机制则会去清理堆内存里的数据。

3、类:具有同一类事物的一个抽象。 对象:一个类的一个特殊的实例。

类与对象之间的关系:关联、继承、聚合(聚集、组合)、多态和实现。

4、面向对象的设计思想:继承、封装、多态和抽象。

5、Java中用关键字class定义一个类;用new来创建一个对象;引用(对象的引用,栈中的一小块儿内存指向堆空间的一大块儿内存。。。);new一般与构造函数一起使用(和类重名,没有返回值)。

6、方法重载(overload):在同一个类中,方法的名字一样,方法的参数类型或者参数个数可以不同。(构造函数的重载)。

在调用时,会根据不同的参数表选择对应的方法。(C++的静态多态。。。)

7、this关键字:this指的是当前对象,在堆内存中,存在一个自己的引用指向自身。(最常见是可以用于构造函数,当构造函数中的传参与类的属性一样时就可以使用如this.name = name这种写法以区分。)this也可以看作是一个变量,它的值是当前对象的引用。

8、static关键字:在类中,用static声明的成员变量为静态成员变量,其为该类的公用变量,在第一次使用时被初始化,对于该类的所有对象来说,static成员变量只有一份,分配在数据区。

用static声明的方法为静态方法,在调用该方法时,不会将对象的引用传递给它,所以static方法中不能访问非static的成员变量。(静态方法不再是针对某个对象的调用,所以不能访问非静态成员。)

可以通过对象引用或者类名(不需要实例化)访问静态成员。

9、package和import语句

为了解决众多类的命名冲突的问题,Java引入package机制,提供类的多重命名空间。(包起名的方法:一般把公司的域名反过来,这个类的class文件一定要位于正确的目录下,跟package的命名结构一样。)

使用时,用import关键字引用,引入单个类也可以,使用.*引入所有的类。Java中可以不使用import语句就可以直接使用java.lang包中的类,比如最常见的System和String类。

在使用时一定要注意环境变量的classpath路径,必须class文件的最上层包的父目录位于classpath下。也可以将其打到一个jar包里,将jar包的路径放到环境变量中(命令:jar -cvf xx.jar *.*)

10、访问控制权:private (default:什么都不写) protected public

11、extends关键字:一个类从另外一个类继承,继承中子类继承了父类的所有的成员变量以及所有的方法,包括private变量,但是private成员变量不能用。

12、super关键字:使用super关键字引用基类的成分。

13、继承中的构造方法:

子类的构造过程必须调用基类中的构造方法;

子类可以在自己的构造方法中使用super(参数列表)调用基类的构造方法(如果调用super,必须写在子类构造方法的第一行,即先构造父类然后构造子类;可以使用this(参数列表)调用本类中另外的构造方法。);

如果子类的构造方法中没有显式地调用基类的构造方法,则系统会默认调用基类无参的构造方法,如果基类没有无参构造方法,则编译会报错。

14、方法重写(overwrite/override):

在子类中可以根据需要对基类中继承的方法进行重写;

重写方法必须和被重写方法具有相同的方法名称、参数列表和返回值类型(防止出错,在基类中复制。。。);

重写方法不能使用比被重写方法更严格的访问权限。

15、final关键字:

final的变量值不能够被改变,类似C++的const(final成员变量,final局部变量,传参);

final的方法不能被重写;

final的类不能被继承。

16、Java所有的老祖宗类,Object

Object类是所有Java类的根基类,如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类;

toString方法:Object类中定义有public String toString()方法,其返回值是String类型,描述当前对象的有关信息,返回值是:类名+@+哈希code;用户可以根据需要在自定义类型中重写toString()方法。

equals()方法:Object类中定义了public boolean equals(Object obj)方法,提供对象是否相等的逻辑比较;x.equals(y)当x和y是同一个对象的引用时返回true,否则返回false;JDK中重写了String和Date类中的equals方法,调用这些对象的equals方法时,当两个对象的是同一个类且对象的属性内容相等时(不要求是同一个对象),返回true,否则返回false;用户也可以根据需要重写自定义类型中的equals()方法。

17、upcasting:父类的引用指向子类对象,接口的引用指向实现了接口类的对象(C++中父类的指针指向子类) 反之downcasting

18、多态:实现多态的三要素 继承、重写和父类引用指向子类对象。

动态绑定是指:在程序执行期间,判断所引用对象的实际类型,根据其实际的类型调用其相应的方法(虽然传入的是一个父类的名称,但是引用所指向的是一个子类对象,所以在程序运行时会调用子类重写父类的方法而不是父类的方法)。

19、抽象类:

用abstract关键字来修饰一个类时,这个类叫抽象类;用abstract来修饰一个方法时,该方法叫抽象方法;

含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象方法必须被重写;

抽象类不能被实例化,抽象方法只需声明而不需实现(在子类中重写实现)。(C++中纯虚函数)

20、接口interface:

接口是抽象方法和常量值定义的集合;从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义而没有变量和方法的实现(所以的方法都是抽象方法,并且都是public的,所有的成员变量都是public的static的以及final的);接口与接口之间可以相互继承,类和接口之间通过实现(implements)。

接口的本质,在内存中可以看到这个类的部分方法,也就是调用接口本身定义的抽象方法。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容