Java基础知识点总结(长文慎入!)

这篇博客全面总结了Java编程的基础知识点,包括面向对象、值传递与引用传递的区别、==与equals的区别、String对象的特性、static与final关键字的使用、接口与抽象类的对比、重载与重写的概念、以及HashMap的深入解析,涵盖了面试中常见的Java核心概念和技术,适合Java初学者和面试者复习巩固。
摘要由CSDN通过智能技术生成

文章目录

什么是面向对象?

这个问题其实是最不好回答的,因为这个东西甚至就可以上升到哲学方面…,回答的好与不好很能看出Java学的深浅,这里借用《Think in Java》这本书来说一下吧

  1. 万物皆对象
  2. 程序是对象的集合,它们通过发送消息来告知彼此所要做的。
  3. 每个对象都有自己的由其他对象所构成的存储。
  4. 每个对象都有其类型
  5. 而某-特定类型的所有对象都可以接收同样的消息。

1. 描述一下值传递和引用传递的区别

https://blog.csdn.net/qq_17806439/article/details/86075353

值传递:

方法调用时,实际参数把它的值传递给对应的形式参数,函数接收的是原始值的一个copy,此时内存中存在两个相等的基本类型,即实际参数和形式参数后面方法中的操作都是对形参这个值的修改,不影响实际参数的值

引用传递:

也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,函数接收的是原始值的内存地址;

在方法执行中,形参和实参内容相同,指向同一块内存地址,方法执行中对引用的操作将会影响到实际对象

2. ==和equals区别?String的equals方法是如何重写的?为什么要重写equals方法?为什么要重写hashCode方法?

可参考:http://www.bimowu.com/kstudy-web/clienttopic/view.do?topicId=751

以及:Java 如何重写对象的 equals 方法和 hashCode 方法

3. String s1 = new String(“abc”); String s2 = “abc”; s1 == s2? 语句1在内存中创建了几个对象?

http://www.bimowu.com/kstudy-web/clienttopic/view.do?topicId=751

补充:

        String str1 = "str";
        String str2 = "ing";

        String str3 = "str" + "ing";//常量池中的对象
        String str4 = str1 + str2; //在堆上创建的新的对象	  
        String str5 = "string";//常量池中的对象
        System.out.println(str3 == str4);//false
        System.out.println(str3 == str5);//true
        System.out.println(str4 == str5);//false
        String s1 = new String("计算机");
        String s2 = s1.intern();
        String s3 = "计算机";
        System.out.println(s2);//计算机
        System.out.println(s1 == s2);//false,因为一个是堆内存中的 String 对象一个是常量池中的 String 对象,
        System.out.println(s3 == s2);//true,因为两个都是常量池中的 String 对象

在这里插入图片描述

尽量避免多个字符串拼接,因为这样会重新创建对象。如果需要改变字符串的话,可以使用 StringBuilder 或者 StringBuffer。

请着重掌握关于String的以下知识:

4. String为什么是不可变的?jdk源码中的String如何定义的?为什么这么设计?

https://blog.csdn.net/weixin_42447959/article/details/82598778

4. 请描述一下static关键字和final关键字的用法。

静态变量、静态方法、静态类

1.静态变量:

​ 声明为static的静态变量实质上就是全局变量,当声明一个对象时,并不产生static变量的拷贝,而是该类所有实例变量共用同一个static变量。也就是说这个静态变量只加载一次,只分配一块储存空间。

2.静态方法:

​ 声明为static的静态方法有以下几个特点:

​ (1)静态方法只能调用静态方法;

​ (2)静态方法只能访问静态数据;

​ (3)静态方法不能以任何方式引用this或super;

3.静态类:

​ 通常一个普通类不允许声明为静态,只有一个内部类才可以(main方法就是一个典型),这时这个声明的静态类可以直接作为一个普通类来使用,而不需要实例一个外部类。

final的作用从变量、方法、类三个方面来理解、

​ final修饰的变量的值不能被修改,是一个常量;

​ final修饰的方法不能被重写;

​ final修饰的类不能被继承;

5. 接口和抽象类的区别是什么?

https://www.jianshu.com/p/c4f023d02f0c

6. 重载和重写的区别?

重载: 发生在同一个类中,方法名必须相同,参数类型不同、个数不同、顺序不同,方法返回值和访问修饰符可以不同,发生在编译时。

重写: 发生在父子类中,方法名、参数列表必须相同,返回值范围小于等于父类,抛出的异常范围小于等于父类,访问修饰符范围大于等于父类;如果父类方法访问修饰符为private则子类就不能重写该方法。

7. 面向对象的三大特性,谈谈你对xx的理解

https://www.cnblogs.com/inspred/p/9526253.html

8. 请写出下面程序的输出结果 (考察的是基本类型的转换,及原码反码补码的运算)

   public static void main(String[] args) {
   
           // TODO Auto-generated method stub
           int a=255;
           System.out.println(Integer.toBinaryString(a));
           System.out.println((byte) a); 
   }
无论是工作学习,不断的总结是必不可少的。只有不断的总结,发现问题,弥补不足,才能长久的进步!!Java学习更是如此,知识点总结目录如下: 目录 一、 Java概述 3 二、 Java语法基础 5 数据类型 5 运算符号 14 语句 15 函数 15 方法重载(Overloadjing)与重写(Overriding) 16 数组 17 总结 18 三、 常见关键字 20 四、 面向对象★★★★★ 21 五、 封装(面向对象特征之一)★★★★ 23 六、 继承(面向对象特征之一)★★★★ 25 七、 接口(面向对象特征之一)★★★★ 28 八、 多态(面向对象特征之一)★★★★ 30 九、 java.lang.Object 31 十、 异常★★★★ 34 十一、 包(package) 37 十二、 多线程★★★★ 39 为什么要使用多线程 39 创建线程和启动 39 线程的生命周期 44 线程管理 45 线程同步 49 线程通信 52 线程池 58 死锁 64 线程相关类 65 十三、 同步★★★★★ 67 十四、 Lock接口 70 十五、 API 71 String字符串:★★★☆ 71 StringBuffer字符串缓冲区:★★★☆ 73 StringBuilder字符串缓冲区:★★★☆ 74 基本数据类型对象包装类★★★☆ 75 集合框架:★★★★★,用于存储数据的容器。 76 Collection接口 77 Iterator接口 78 List接口 78 Set接口 80 Map接口 81 把map集合转成set的方法 82 使用集合的技巧 83 Collections--集合工具类 83 Arrays—数组对象工具类 84 增强for循环 85 可变参数(...) 86 枚举:关键字 enum 86 自动拆装箱 86 泛型 87 System 89 Runtime 90 Math 90 .Date:日期类,月份从0—11 92 Calendar:日历类 93 十六、 IO流:用于处理设备上数据 ★★★★★ 94 IO流的概念 95 字符流与字节流 98 流对象 101 File类 102 Java.util.Properties 103 介绍IO包中扩展功能的流对象 103 十七、 网络编程 110 网络基础之网络协议篇 111 UDP传输 124 TCP传输 126 十八、 反射技术 127 十九、 Ajax原理及实现步骤★★★★★ 130 Ajax概述 130 Ajax工作原理 130 Ajax实现步骤 130 详解区分请求类型: GET或POST 131 $.ajax标准写法 134 二十、 正则表达式:其实是用来操作字符串的一些规则★★★☆ 135 二十一、 设计模式★★★★★ 136 设计模式简介 136 单例设计模式:★★★★★ 156 工厂模式★★★★★ 159 抽象工厂模式★★★★★ 163 建造者模式 170 原型模式 177 适配器模式 182 桥接模式 188 过滤器模式 192 组合模式 193 装饰器模式★★★★★ 196 外观模式 201 享元模式 204 代理模式★★★★★ 208 责任链模式 212 命令模式 216 解释器模式 219 迭代器模式 222 中介者模式 224 备忘录模式 226 观察者模式 230 状态模式 233 空对象模式 236 策略模式★★★★★ 238 模板模式 240 访问者模式 244 设计模式总结★★★★★ 247 二十二、 Java其他总结 248 Java JVM知识点总结 248 equals()方法和hashCode()方法 270 数据结构 273 Array方法类汇总 304 Java数组与集合小结 305 递归 309 对象的序列化 310 Java两种线程类:Thread和Runnable 315 Java锁小结 321 java.util.concurrent.locks包下常用的类 326 NIO(New IO) 327 volatile详解 337 Java 8新特性 347 Java 性能优化 362
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值