| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> 【Java八股40天-Day1】 Java基础(一) -> 正文阅读 |
|
[Java知识库]【Java八股40天-Day1】 Java基础(一) |
1.一次编译到处运行同一个Java源码只需要编译一次,就可以在不同的机器上运行,而不需要重新编译。字节码是不能直接运行的,需要JVM翻译成机器码。 2.一个Java文件中能有多个类吗?(不含内部类)可以有多个类,但是只能由一个public修饰的类,且这个类名必须和文件名一样 3.Java访问权限符修饰成员变量或成员方法时private:类内,default:同包,protected: 同包及子类,public:任意 4.Java数据类型基本数据类型:byte、short、int、long、float、double、char、boolean 5.成员变量和局部变量区别成员变量:类中定义,也叫类属性,有默认初始值、非静态变量在堆中和对象共存亡,静态变量在方法区和类对象共存亡
局部变量:方法或代码块中定义,没默认初始值,必须得手动赋初始值,存在栈内存中,作用范围结束,空间自动释放
6.为啥要有包装类?Java是面向对象的语言,设计理念是一切皆对象,但是8中基本数据类型没有对象的特征,为了解决这个问题就定义了他们对应的引用类型 7.Java中的装箱、拆箱自动装箱、拆箱是JDK1.5提供的功能 8.Integer和Double类型如何判断相等?不同数据类型当然不能直接用等于号、 也不能变成字符串进行比较,浮点数有小数点,整数没有一定不相等,也不能用他们的compareTo方法。这个方法只能对相同类型进行比较 可以把他们先转化成相同的数据类型再比较,比如都转化成基本数据类型,然后用==比较 9.int和Integer的区别和比较int和Integer比较会进行自定拆箱,对其数值进行比较。
10.说说对面向对象的理解面向对象是一种优秀的程序设计思想,有三大特性:封装、继承、多态。面向对象更类似人类的自然思维方式,静事物抽象为类,使得软件系统的组件可以直接映像到客观世界。注重事情的参与者和各自需要做什么。而面向过程是将任务拆解称为一系列步骤,注重每个步骤干什么和执行顺序。 举个人用洗衣机洗衣服的例子: 11.封装、继承、多态。封装:将类的某些信息私有化、不让外部直接访问,通过提供公共的方法来实现对隐藏信息的操作和访问,隐藏实现细节,提高安全性。 多态:基于对象所属类的不同,外部对同一个方法的调用和实际执行逻辑不同,提高扩展性降低耦合度。 多态的前提:继承关系(或接口关系),子类重写父类方法、父类引用指向子类对象 12.重载与重写的区别重载发生在一个类中,多个方法名相同,参数列表不同。这些方法构成重载关系。重载和方法的返回值及权限修饰符无关。 13.介绍Object类中的方法Class<?> getClass() 返回该对象运行时类 14.hashCode() 和 equals() 关系,为什么要重写这两个方法hashCode()相同则equals()不一定相等,equals()相等,则他们hashCode()一定相同 Object类的equals() 方法默认是用==来比较的,也就是两个对象是一个地址的同一个对象时,才能返回相等。而实际的业务中,通常需求都是两个对象只有内容相同认为他们是相等的,所有得重写equals()方法。 一般要求重写equals() 必须重写hashCode(), 因为很多内置数据结构,比如HashSet是先判断hashCode()是否相同,再用equals判断是否相等。如果你重写了equals而没有重写hashCode,可能导致两个对象equals相等而hashCode不相等,这就违背了hashCode和equals关系了,可能导致HashSet里面出现重复的(equals相等)对象。 15.String 能被继承吗?不能,String类是被final修饰的,不能被继承。 16.String 和StringBuilder、StringBuffer区别String类是不可变类,一旦创建,这个字符序列就不可改变,直到对象被销毁 StringBuilder和StringBuffer有共同的父类AbstractStringBuilder, 两个类的构造方法和成员方法基本相同, 17. 使用字符串时,“” 直接赋值和 new String(“”) 的区别StringTable(字符串常量池)https://blog.csdn.net/weixin_44179010/article/details/121888449 18.字符串相加的底层如何实现如果拼接的都是字面量,则在编译期就会优化成一个完整字符串,和直接写一个完整字符串一样 如果拼接的字符串包含变量,编译器会采用StringBuilder对其优化,即自动创建一个StringBuilder并调用其append方法,把字符串拼接到一起 最好就是,字符串字面量直接用+号拼接、变量用StringBuilder或者StringBuffer、两个字符串拼接包括变量用concat()方法 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 16:32:18- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |