
JavaGuide学习
巩固知识,完善不足
才疏学浅的小缘同学
知足且上进,温柔而坚定。
展开
-
说一说final关键字
final关键字主要使用在三个地方:变量、方法和类上。对于final修饰的变量,如果是基本数据类型,则其值不可改变;如果是引用数据类型,则对其初始化之后便不能让其指向另一个对象。对于final修饰的方法,不可被重写。对于final修饰的类,不可被继承,final类中的所有成员方法都会被隐式地指定为final方法。...原创 2021-12-10 10:03:55 · 127 阅读 · 0 评论 -
什么是方法的返回值?返回值在类的方法里的作用是什么?
方法的返回值是某个方法体中的代码执行后产生的结果。返回值的作用是接受结果,使得它可以用于其它操作。原创 2021-12-10 09:39:23 · 3216 阅读 · 0 评论 -
创建一个对象用什么运算符?对象实体和对象引用有何不同?
创建一个对象使用new运算符。new创建的对象实例在堆内存中,而对象引用指向对象实例,对象引用存放在栈内存中。一个对象引用可以指向0个或1个对象实体,而一个对象可以有多个引用来指向它。...原创 2021-12-09 11:53:47 · 1293 阅读 · 0 评论 -
java中成员变量和局部变量的区别?
从定义的位置上看:成员变量定义在类中,而局部变量定义在方法中。从作用范围上看:成员变量可以作用在整个类中,而局部变量在出了方法后就不能再用。从默认值上看:成员变量如果没有赋值,则会有默认值,而局部变量没有默认值,想要使用必须手动赋值。从生命周期上:成员变量随对象创建而产生,随对象被垃圾回收而消失。局部变量随方法进栈而产生,随方法出栈而消失。从存储位置上:成员变量位于堆内存中,局部变量位于栈内存中。...原创 2021-12-09 11:37:34 · 210 阅读 · 0 评论 -
接口和抽象类的区别是什么?
1.接口的方法默认是public,所有方法在接口中都不能有具体实现(Java8以后可以有默认实现),而抽象类可以有非抽象的方法。2.接口中除了static、final变量,不能有其他变量,抽象类则不一定。3.一个类可以实现多个接口,而只能实现一个抽象类。4.接口中的方法默认修饰符是public,抽象方法可以有public、protected和default,因为抽象方法就是为了被重写所以不能使用private关键字修饰。5.从设计层面来说,抽象是对类的抽象,而接口是对行为的抽象。6.抽.原创 2021-12-09 00:22:36 · 187 阅读 · 0 评论 -
在Java中定义无参构造方法的作用?
Java程序在执行子类的构造方法之前,如果没有使用super()调用父类特定的构造方法,则会默认调用父类中的无参构造方法。如果父类中没有无参构造方法,而子类又没有使用super()调用父类中特定的构造方法,则编译时会出错。...原创 2021-12-08 23:08:14 · 616 阅读 · 0 评论 -
在静态方法内调用一个非静态成员为什么是非法的?
非静态成员变量或方法属于类的对象,只有在类实例化时才会分配内存,然后通过实例访问。而静态成员变量和方法属于类本身,在类加载的时候就会分配内存。因此在一个静态方法内调用一个非静态成员时,可能会出现非静态成员没分配内存,非静态成员还不存在的情况,此时就会出错,因此是非法的。...原创 2021-12-08 23:01:42 · 1633 阅读 · 0 评论 -
什么是自动装箱和拆箱?
实话说,刚刚学Java时听到这两个词觉得很高大上,给人一种深奥的感觉,学完之后才知道装箱:指将基本数据类型用它们对应的引用类型包装起来。拆箱:指将包装类型还原为基本数据类型。自动装箱和拆箱就是这个,也不难理解。...原创 2021-12-08 22:48:02 · 606 阅读 · 0 评论 -
String、StringBuffer和StringBuilder的区别是什么?String为什么是不可变的?
目录 区别主要分三个方面即可变性、线程安全性和性能。从可变性来看从线程安全性来看从性能来看总结从可变性来看String是不可变的,因为在String类中使用final关键字修饰字符数组来保存字符串。而StringBuffer和StringBuilder都继承自AbstractStringBuilder类,在AbstractStringBuilder类虽然也是使用字符数组来保存字符串,但没有使用final修饰,所以可变。从线程安全性...原创 2021-12-08 22:42:28 · 576 阅读 · 0 评论 -
Java面向对象编程三大特性:封装、继承、多态
封装:把一个对象的属性私有化,并提供一些可以被外界访问的属性的方法,隐藏对象的内部实现细节。就比如一台冰箱,我们只需要知道把东西放在其中就能制冷,但为什么能制冷我们并不需要知道。封装可以减少代码之间的耦合度,并且安全,易维护。继承:子类继承父类的特征和行为,使得子类具有父类的实例域和方法,同时子类可以在父类的基础上进行拓展。比如宝马、奔驰、玛莎拉蒂都继承了父类汽车,具有汽车的基本属性和方法。通过继承可以很方便地复用原来的代码。多态:允许不同类的对象对同一消息做出响应,即同一个行原创 2021-12-08 22:21:35 · 462 阅读 · 0 评论 -
重载(overload)和重写(override)的区别
重载:发生在同一个类中,方法名必须相同,参数类型或参数个数或参数顺序不同,方法返回值和访问修饰符可以不同,调用的时候根据函数的参数来区别不同的函数。重写:发生在运行期,是子类对父类函数的重新实现。返回值类型、方法名、参数列表必须相同,抛出的异常范围小于等于父类,访问修饰符大于等于父类。如果父类方法的访问修饰符为private、static和final,则子类不能重写该方法,static方法可被再次声明。构造方法无法被重写。图表总结:画图工具是神绘,很好用。.原创 2021-12-08 11:31:11 · 285 阅读 · 0 评论 -
构造器Constructor是否可被重写override
不可以。构造器也叫构造方法、构造函数,是一种特殊的方法,用于初始化对象。构造器是生产对象的一个途径,假如可以被继承,那么对象就可以被复制了。子类可以通过继承构造器来生产父类对象,这样会出现子类引用指向父类对象的情况,这在Java中是不被允许的。构造器可以被重载,所以在一个类中可以有多个构造函数。...原创 2021-12-08 09:40:54 · 374 阅读 · 0 评论 -
字符型常量和字符串常量的区别
1.从形式上:字符常量是单引号引起来的一个字符,而字符串常量是双引号引起来的若干字符。2.从含义上:字符常量相当于一个整数型(ASCII值),可以参加表达式运算;字符串常量代表一个地址值(该字符串在内存中存放的地址)。char a = 'A';String b = "ABC";System.out.println(a + 'a');System.out.println(b + "d");System.out.println(a + b);3.从占内存大小:..原创 2021-12-06 17:11:54 · 1974 阅读 · 0 评论 -
Java和C++的区别
都是面向对象的语言,具有封装、继承和多态的特点。 Java不提供指针来直接访问内存,程序内存更加安全。 Java的类是单继承的,C++支持多继承。虽然Java中的类不可多继承,但接口可以多继承。 Java具有自动内存管理机制,不需程序员手动释放无用内存。...原创 2021-12-06 16:33:00 · 649 阅读 · 0 评论 -
Java语言有哪些特点?
1.简单易学语法和C和C++相似,容易上手,引入了垃圾回收机制,不再使用指针,解决了内存的管理问题2.面向对象Java是一种面向对象的语言,具有封装、继承、多态的特点3.平台无关性Java语言引入了JVM即Java虚拟机机制,使其有了很好的可移植性。“一次编写,到处运行”。在不同的平台上运行不需重新编译。4.健壮性Java语言中的强类型机制、异常处理和垃圾回收机制等都为Java提供了健壮性的保证。5.安全性Java提供了一个安全机制防止恶意代码的攻击,此原创 2021-12-06 10:50:05 · 518 阅读 · 0 评论 -
关于 JVM JDK 和 JRE
关于JVM、JDK、JRE的一些理解原创 2021-12-06 16:07:42 · 196 阅读 · 0 评论 -
面向对象和面向过程的区别
面向对象:以过程为中心,把解决问题的过程拆分为一个个小过程,通过一个个过程的完成解决问题。面向过程的性能一般较面向对象高,因为面向对象类调用时需要实例化,开销大,耗费资源,当性能是最重要的时候,一般采用面向过程开发,比如单片机、嵌入式开发,Linux/Unix等。缺点是需要思考详细步骤,耗费精力,代码重用性差,拓展能力差,后期维护难度较大。 面向过程:以对象方法为中心,先从问题中抽象出对象,然后用对象执行方法的方式解决问题。面向对象易维护、易复用、易拓展。因为面向对象具有封装、继承、多态的特性,所以可以.原创 2021-12-06 10:12:56 · 172 阅读 · 0 评论