Java 基础知识点 笔记总结 (四),330页PDF,10万字的知识点总结

super调用父类属性和方法:

在这里插入图片描述


super调用构造器:

在这里插入图片描述

14. 对象的 多态性

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


在这里插入图片描述


父类的引用指向了子类的对象!!

**虚拟方法调用:

当调用子父类同名同参数的方法时,实际执行的是子类重写父类的方法。**

在这里插入图片描述

package com.itholmes.p2;

public class PersonTest {

public static void main(String[] args) {

//定义了Person类调用

Person p1 = new Person();

p1.eat();

//定义了Man类调用

Man man = new Man();

man.eat();

man.age = 25;

//定义了Woman类调用

Woman woman = new Woman();

woman.eat();

System.out.println(“******************”);

//对象多态形式:父类的引用指向子类的对象

Person p2 = new Man();

//当调用子父类同名同参数的方法时,实际执行的是子类重写父类的方法。–虚拟方法调用

p2.eat();

p2.walk();

//earnMoney()没有在父类Person中定义,在子类Man中定义了。

//p2中的earnMoney()方法就不能被调用了,因为Person中没有!!!

//p2.earnMoney();

}

}


多态性常用的情形:

package com.itholmes.p2;

public class Test {

public static void main(String[] args) {

Test t = new Test();

//多态性操作

t.func(new Dog());

}

//设置类对象为接受

public void func(Animal animal) {

animal.eat();

animal.shout();

}

}

class Animal{

public void eat() {

System.out.println(“动物吃饭”);

}

public void shout() {

System.out.println(“动物手套”);

}

}

class Dog extends Animal{

@Override

public void eat() {

System.out.println(“小狗吃饭”);

}

@Override

public void shout() {

System.out.println(“小狗手套”);

}

}


对象的多态性,只适用于方法,不适用于属性! 我们如果定义了在子类和父类中定义了相同属性,调取时也仅仅调用了父类,也就是对于属性(编译和运行都看左边)。

package com.itholmes.p2;

public class Test {

public static void main(String[] args) {

Animal animal = new Dog();

//运行也仅仅显示的是父类

System.out.println(animal.age);

}

}

class Animal{

int age = 10;

}

class Dog extends Animal{

int age = 20;

}


**多态仅仅能够调用父类的方法和属性和子类重写的方法,

那么,如何调用子类特有的属性和方法?**

向下转型:使用强制类型转换符号!!

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

package com.itholmes.p2;

public class Test {

public static void main(String[] args) {

Animal animal = new Dog();

//对于属性运行也仅仅显示的是父类属性

System.out.println(animal.age);

//向下转型,强制转换

Dog d = (Dog)animal;

System.out.println(d.age);

}

}

class Animal{

int age = 10;

}

class Dog extends Animal{

int age = 20;

}

15. instanceof 操作符

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


instanceof操作符:

在这里插入图片描述

package com.itholmes.p2;

public class Test {

public static void main(String[] args) {

Animal animal = new Dog();

//对于属性运行也仅仅显示的是父类属性

System.out.println(animal.age);

//向下转型,强制转换

Dog d = (Dog)animal;

System.out.println(d.age);

//这个时候的animal已经转为了Dog类型!!!

System.out.println(animal instanceof Dog);

//10

//20

//true

}

}

class Animal{

int age = 10;

}

class Dog extends Animal{

int age = 20;

}

class monkey extends Animal{

int age = 30;

}

在这里插入图片描述


alt + shift + s 快捷键,弹出源代码的相关选项,通常用来获取变量的get和set,构造器的方法。

16. Object类 使用

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


Object类是所有Java类的根父类。

如果在类的声明中未使用extends关键字指明其父类,则默认父类为java.lang.Object类。


getClass() :获取当前类名

getSuperclass() :获取当前父类名

package com.itholmes.p2;

public class Test {

public static void main(String[] args) {

Order order = new Order();

//getClass()获取当前类名

System.out.println(order.getClass());

//getSuperclass()获取当前父类名

System.out.println(order.getClass().getSuperclass());

//class com.itholmes.p2.Order

//class java.lang.Object

}

}

class Order{

}


Object类中的clone()方法:复制类。

在这里插入图片描述

在这里插入图片描述

17. == 和 equals() 区别

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


== 作用:

比较基本数据变量数据是否相同。

比较引用数据类型变量,对象地址值是否相同。

在这里插入图片描述


equals()方法使用:

只能适用于引用数据类型。

在这里插入图片描述

18. Object类中的 toString()方法

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

注意和之前的Arrays.toString()方法不同!


一般我们定义的类:返回类的路径和类名 + @ + JVM虚拟地址。

像Integer这种包装类,使用toString()后,得到的是对应的基本数据类型(例如Integer对应int)。

package com.itholmes.p2;

public class test {

public static void main(String[] args) {

Tom t = new Tom();

//当我们输出一个对象的引用时,实际上就是调用当前对象的toString()方法。

System.out.println(t.toString());//com.itholmes.p2.Tom@5aaa6d82

System.out.println(t);//com.itholmes.p2.Tom@5aaa6d82

}

}

class Tom{

}

像toString这种方法完全可以ctrl + 左键 ,查看他的源码!

19. @Test 单元测试方法

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


注意权限public,没有返回值,没有形参。

在这里插入图片描述

在这里插入图片描述

package com.itholmes.p2;

import java.util.Date;

import org.junit.Test;

public class test {

@Test

public void testEquals() {

String s1 = “MM”;

String s2 = “MM”;

System.out.println(s1.equals(s2));

Object obj = new String(“GG”);

Date date = (Date)obj;

}

}

手动导入方法如下:

在这里插入图片描述

在这里插入图片描述

20. 包装类(Wrapper)

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


在这里插入图片描述

三者转换:基本数据类型,包装类,String。

在这里插入图片描述

20.1 类的基本数据类型 ⇒ 转换为包装类(通过,调用包装类的构造器)



integer类型转换注意事项:

package com.itholmes.p2;

import org.junit.Test;

public class test {

//类的基本数据类型 ==》 转换为包装类(通过,调用包装类的构造器)

@Test

public void testEquals() {

int num1 = 0;

//基本数据类型变量无法直接使用toString类的方法

//System.out.println(num1.toString());

//但是如果是类对象转换就可以使用类方法。

Integer in1 = new Integer(num1);

System.out.println(in1.toString());

//符合integer型的字符串形式可以

Integer in2 = new Integer(“123”);

System.out.println(in2.toString());

//但是,不符合就会报错!!!

// Integer in3 = new Integer(“123abc”);

// System.out.println(in3.toString());

}

}


boolean类型转换注意事项:

package com.itholmes.p2;

import org.junit.Test;

public class test {

//类的基本数据类型 ==》 转换为包装类(通过,调用包装类的构造器)

@Test

public void testEquals() {

Boolean b1 = new Boolean(true);

Boolean b2 = new Boolean(“true”);

Boolean b3 = new Boolean(“true123”);

System.out.println(b3);

//注意boolean比较特殊输入别的字符串,默认为false

//具体可以再查看已下boolean判断的源码

}

}

20.2 包装类 ⇒ 转换为基本数据类型(调用包装类的xxxValue(),xxx看数据类型)


package com.itholmes.p2;

import org.junit.Test;

public class test {

//包装类 ⇒ 转换为基本数据类型(调用包装类的xxxValue(),xxx看数据类型)

@Test

public void test2() {

//int类型

Integer in1 = new Integer(12);

int i1 = in1.intValue();

System.out.println(i1);

//float类型

Float fl1 = new Float(1.1);

float f1 = fl1.floatValue();

System.out.println(f1);

}

}

20.3 自动装箱 和 自动拆箱



自动装箱实际就是基本数据类型 转为 包装类.

自动拆箱实际上是包装类 转为 基本数据类型

package com.itholmes.p2;

import org.junit.Test;

public class test {

//自动装箱实际就是基本数据类型 转为 包装类

//自动装箱,像下面基本数据类型直接赋值给了对象,就是自动装箱。

//int num2 = 10;

//Integer In2 = num2;

//自动拆箱实际上是包装类 转为 基本数据类型

//Integer i = new Integer(123);

//System.out.println(i.toString());

@Test

public void test2() {

int num1 = 10;

//这里num1是基本数据类型,然而这里参数要传递一个对象!显然不可以!!

//但是再java 5.0 新特性后,就补充了自动装箱,从而满足了Object obj = num1;这样的例子。

method(num1);

}

public void method(Object obj) {

System.out.println(obj);

}

}

20.4 基本数据类型,包装类 ⇒ String类型(调用String 重载的valueOf(xxx))



方式1:连接运算

方式2:String.valueOf(xxx),调用String中的valueOf转换为字符串

package com.itholmes.p2;

import org.junit.Test;

public class test {

@Test

public void test2() {

int num1 = 10;

//方式1:连接运算

String str = num1 + “”;

//方式2:String.valueOf(xxx),调用String中的valueOf转换为字符串

float f1 = 12.3f;

String str2 = String.valueOf(f1);

System.out.println(str2);

}

}

20.5 String类型 ⇒ 基本数据类型,包装类(调用包装类的parseXxx())


注意:首先,强转是不可以的!!! 原因:强转没有子父类关系的,是不能被强转。

String类型 ⇒ 基本数据类型,包装类(调用包装类的parseXxx())

package com.itholmes.p2;

import org.junit.Test;

public class test {

@Test

public void test2() {

String str1 = “123”;

//首先,强转是不可以的!!! 原因:强转没有子父类关系的,是不能被强转。

//int num1 = (int)str1;

//Integer in1 = (Integer)str1;

//String类型 ⇒ 基本数据类型,包装类(调用包装类的parseXxx())

int num2 = Integer.parseInt(str1);

System.out.println(num2);

String str2 = “true”;

boolean b1 = Boolean.parseBoolean(str2);

System.out.println(b1);

//需要注意的hi是NumberFormatException错误,例如把一个abc转为Integer类型,那肯定格式错误!

}

}

20.6 三元运算符的 两个结果类型必须统一!!!


package com.itholmes.p2;

import org.junit.Test;

public class test {

@Test

public void test2() {

Object o1 = true ? new Integer(1) : new Double(2.0);

System.out.println(o1);

//结果为:1.0。

//为什么不是1呢?因为三元运算符的两个结果必须统一为一个类型.

//当然Integer和Double比起来,自然是将Integer提升为了Double类型了。

System.out.println(o1 instanceof Double);

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

img
img

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V:vip1024b 备注Java获取(资料价值较高,非无偿)
img

面试准备+复习分享:

为了应付面试也刷了很多的面试题与资料,现在就分享给有需要的读者朋友,资料我只截取出来一部分哦

秋招|美团java一面二面HR面面经,分享攒攒人品

package com.itholmes.p2;

import org.junit.Test;

public class test {

@Test

public void test2() {

Object o1 = true ? new Integer(1) : new Double(2.0);

System.out.println(o1);

//结果为:1.0。

//为什么不是1呢?因为三元运算符的两个结果必须统一为一个类型.

//当然Integer和Double比起来,自然是将Integer提升为了Double类型了。

System.out.println(o1 instanceof Double);

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-TBOFufgL-1711552094607)]
[外链图片转存中…(img-U1fMh1Ze-1711552094608)]
[外链图片转存中…(img-7ENbPRL8-1711552094608)]
[外链图片转存中…(img-gdl2oMhS-1711552094609)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

[外链图片转存中…(img-vi26SSgG-1711552094609)]
[外链图片转存中…(img-xNEg8Led-1711552094609)]

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V:vip1024b 备注Java获取(资料价值较高,非无偿)
[外链图片转存中…(img-HddYF60P-1711552094610)]

面试准备+复习分享:

为了应付面试也刷了很多的面试题与资料,现在就分享给有需要的读者朋友,资料我只截取出来一部分哦

[外链图片转存中…(img-hf50xC8c-1711552094610)]

  • 14
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 目录 1. 2. 目录 .........................................................................................................................................................1 JVM ...................................................................面试.................................................................................... 19 2.1. 线程 ...................................................................................................................................................... 20 2.2. JVM 内存区域 ..................................................................................................................................... 21 2.2.1. 程序计数器(线程私有) ................................................................................................................ 22 2.2.2. 虚拟机栈(线程私有) .................................................................................................................... 22 2.2.3. 本地方法区(线程私有) ................................................................................................................ 23 2.2.4. 堆(Heap-线程共享)-运行时数据区 ...................................................................................... 23 2.2.5. 方法区/永久代(线程共享) ..................................................................................................... 23 2.3. JVM 运行时内存 ................................................................................................................................. 24 2.3.1. 新生代 .......................................................................................................................................... 24 2.3.1.1. 2.3.1.2. 2.3.1.3. 2.3.1.4. Eden 区 .................................................................................................................................................... 24 ServivorFrom........................................................................................................................................... 24 ServivorTo ...........................................

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值