当前位置:首页 > JAVA教程 > 正文内容

Java的基本口试题目(3)【JAVA教程】,Java

搜教程4年前 (2019-12-04)JAVA教程154

String s = new String("xyz");建立了几个StringObject?是不是可以继承String类?

两个或一个都有大概,”xyz”对应一个对象,这个对象放在字符串常量缓冲区,常量”xyz”不论涌现若干遍,都是缓冲区中的那一个。 (引荐进修:java口试题目)

NewString每写一遍,就建立一个新的对象,它运用常量”xyz”对象的内容来建立出一个新String对象。假如之前就用过’xyz’,那末这里就不会建立”xyz”了,直接从缓冲区拿,这时刻建立了一个StringObject;

但假如之前没有用过"xyz",那末此时就会建立一个对象并放入缓冲区,这类状况它建立两个对象。至于String类是不是继承,答案是不是定的,由于String默许final润饰,是不可继承的。

String和StringBuffer的区分

JAVA平台供应了两个类:String和StringBuffer,它们可以贮存和操纵字符串,即包括多个字符的字符数据。这个String类供应了数值不可转变的字符串。而这个StringBuffer类供应的字符串可以举行修正。

当你晓得字符数据要转变的时刻你就可以运用StringBuffer。典范地,你可以运用StringBuffers来动态组织字符数据。

下面这条语句一共建立了若干个对象:String s="a"+"b"+"c"+"d";

关于以下代码:

String s1 = "a";
String s2 = s1 + "b";
String s3 = "a" + "b";
System.out.println(s2 == "ab");
System.out.println(s3 == "ab");

第一条语句打印的效果为false,第二条语句打印的效果为true,这说明javac编译可以对字符串常量直接相加的表达式举行优化,不必要比及运转期再去举行加法运算处置惩罚,而是在编译时去掉个中的加号,直接将其编译成一个这些常量相连的效果。

题目中的第一行代码被编译器在编译时优化后,相称于直接定义了一个”abcd”的字符串,所以,上面的代码应当只建立了一个String对象。

写以下两行代码:

String s ="a" + "b" +"c" + "d";
System.out.println(s== "abcd");

终究打印的效果应当为true。

try {}里有一个return语句,那末紧跟在这个try后的finally{}里的code会不会被实行,什么时刻被实行,在return前照样后?

我们晓得finally{}中的语句是一定会实行的,那末这个大概平常脱口而出就是return之前,return今后大概就出了这个要领了,鬼晓得跑那里去了,但更正确的应当是在return中心实行,请看下面顺序代码的运转效果:

public classTest {
    public static void main(String[]args) {
       System.out.println(newTest().test());;
    }
    static int test()
    {
       intx = 1;
       try
       {
          returnx;
       }
       finally
       {
          ++x;
       }
    }
  
}

---------实行效果 ---------

1

运转效果是1,为何呢?

主函数挪用子函数并获得效果的历程,比如主函数预备一个空罐子,当子函数要返回效果时,先把效果放在罐子里,然后再将顺序逻辑返回到主函数。

所谓返回,就是子函数说,我不运转了,你主函数继承运转吧,这没什么效果可言,效果是在说这话之前放进罐子里的。

final, finally, finalize的区分。

final 用于声明属性,要领和类,离别示意属性不可变,要领不可掩盖,类不可继承。内部类要接见局部变量,局部变量必需定义成final范例。

finally是非常处置惩罚语句构造的一部分,示意老是实行。

finalize是Object类的一个要领,在垃圾收集器实行的时刻会挪用被接纳对象的此要领,可以掩盖此要领供应垃圾收集时的其他资本接纳,比方封闭文件等。然则JVM不保证此要领总被挪用

运转时非常与平常非常有何异同?

非常示意顺序运转历程当中大概涌现的非平常状况,运转时非常示意虚拟机的一般操纵中大概碰到的非常,是一种罕见运转毛病。java编译器请求要领必需声明抛出大概发作的非运转时非常,然则并不请求必需声明抛出未被捕捉的运转时非常。

error和exception有什么区分?

error 示意恢复不是不大概但很难题的状况下的一种严重问题。比如说内存溢出。不大概希望顺序能处置惩罚如许的状况。exception示意一种设想或完成问题。也就是说,它示意假如顺序运转平常,从不会发作的状况。

简朴说说Java中的非常处置惩罚机制的简朴道理和运用。

非常是指java顺序运转时(非编译)所发作的非平常状况或毛病,与现实生活中的事宜很类似,现实生活中的事宜可以包括事宜发作的时候、所在、人物、情节等信息,可以用一个对象来示意。

Java运用面向对象的体式格局来处置惩罚非常,它把顺序中发作的每一个非常也都离别封装到一个对象来示意的,该对象中包括有非常的信息。

Java对非常举行了分类,差别范例的非常离别用差别的Java类示意,一切非常的根类为java.lang.Throwable,Throwable下面又派生了两个子类:

Error和Exception,Error示意运用顺序自身没法战胜和恢复的一种严重问题,顺序只要奔溃了,比方,说内存溢出和线程死锁等体系问题。

Exception示意顺序还可以战胜和恢复的问题,个中又分为体系非常和一般非常:

体系非常是软件自身缺点所致使的问题,也就是软件开发人员考虑不周所致使的问题,软件运用者没法战胜和恢复这类问题,但在这类问题下还可以让软件体系继承运转或许让软件挂掉。

比方,数组剧本越界(ArrayIndexOutOfBoundsException),空指针非常(NullPointerException)、类转换非常(ClassCastException);

一般非常是运转环境的变化或非常所致使的问题,是用户可以战胜的问题,比方,收集断线,硬盘空间不够,发作如许的非常后,顺序不应当死掉。

java为体系非常和一般非常供应了差别的解决方案,编译器强迫一般非常必需try..catch处置惩罚或用throws声明继承抛给上层挪用要领处置惩罚,所以一般非常也称为checked非常,而体系非常可以处置惩罚也可以不处置惩罚,所以,编译器不强迫用try..catch处置惩罚或用throws声明,所以体系非常也称为unchecked非常。

Java 中堆和栈有什么区分?

JVM 中堆和栈属于差别的内存地区,运用目标也差别。栈常用于保留要领帧和局部变量,而对象老是在堆上分派。栈一般都比堆小,也不会在多个线程之间同享,而堆被全部 JVM 的一切线程同享。

栈:在函数中定义的一些基本范例的变量和对象的援用变量都是在函数的栈内存中分派,当在一段代码块定义一个变量时,Java 就在栈中为这个变量分派内存空间,当凌驾变量的作用域后,Java 会自动释放掉为该变量分派的内存空间,该内存空间可以立即被另作它用。

堆:堆内存用来寄存由 new 建立的对象和数组,在堆中分派的内存,由 Java 虚拟机的自动垃圾接纳器来治理。

在堆中产生了一个数组或许对象今后,还可以在栈中定义一个特别的变量,让栈中的这个变量的取值即是数组或对象在堆内存中的首地点,栈中的这个变量就成了数组或对象的援用变量,今后就可以在顺序中运用栈中的援用变量来接见堆中的数组或许对象,援用变量就相称因而为数组或许对象起的一个称号。

能将 int 强迫转换为 byte 范例的变量吗?假如该值大于 byte 范例的局限,将会涌现什么征象?

我们可以做强迫转换,然则 Java 中 int 是 32 位的,而 byte 是 8 位的,所以,假如强迫转化,int 范例的高 24 位将会被抛弃,由于byte 范例的局限是从 -128 到 128。

以上就是Java的基本口试题目(3)的细致内容,更多请关注ki4网别的相干文章!

扫描二维码推送至手机访问。

版权声明:本文由搜教程网发布,如需转载请注明出处。

本文链接:https://www.sojiaocheng.cn/16398.html

标签: Java
分享给朋友:

“Java的基本口试题目(3)【JAVA教程】,Java” 的相关文章

JVM内存地区和垃圾接纳的剖析(图文)【JAVA教程】,JVM

JVM内存地区和垃圾接纳的剖析(图文)【JAVA教程】,JVM

本篇文章给人人带来的内容是关于JVM内存地区和垃圾接纳的剖析(图文),有肯定的参考价值,有须要的朋侪可以参考一下,愿望对你有所协助。 一、JVM简介 JVM,全称Java Virtual Machine,即Java虚拟机。以Java作为编程言语所编写的应用顺序都是运转在JVM上的。JVM是一...

Java中标识接口有什么作用?(附代码)【JAVA教程】,Java

本篇文章给人人带来的内容是关于Java中标识接口有什么作用?(附代码),有一定的参考价值,有须要的朋侪能够参考一下,愿望对你有所协助。 标识接口是没有任何要领和属性的接口。标识接口不对完成它的类有任何语义上的请求,它仅仅表明完成它的类属于一个特定的范例。标接口在Java言语中有一些很有名的运用...

什么是设想形式【JAVA教程】,设计模式,创建模式,结构模式,行为模式

什么是设想形式【JAVA教程】,设计模式,创建模式,结构模式,行为模式

设想形式是在软件设想中常见题目的通用、可重复运用、多数人晓得的一种解决方案或模板;这些解决方案是在相称长的一段时间内由浩瀚软件开发人员经由过程重复实验取得的。下面我们就来带人人认识一下设想形式,愿望对人人有所协助。 设想形式的运用 设想形式在软件开发中有两个主要用途。【视频教程引荐:Ja...

Java多线程之Callable和Future的细致引见(代码示例)【JAVA教程】,多线程,java

本篇文章给人人带来的内容是关于Java多线程之Callable和Future的细致引见(代码示例),有一定的参考价值,有须要的朋侪可以参考一下,愿望对你有所协助。 Callable和Future涌现的缘由 建立线程的2种体式格局,一种是直接继续Thread,别的一种就是完成Runnable接口。...

Java中String字符串运算的引见(代码示例)【JAVA教程】,Java

本篇文章给人人带来的内容是关于Java中String字符串运算的引见(代码示例),有肯定的参考价值,有须要的朋侪能够参考一下,愿望对你有所协助。 一、字符串运算 String类 1、概述 String是特别的援用数据范例,它是final类。 2.组织要领 String str = "a...

​JVM,JRE,JDK三者的简朴总结【JAVA教程】,​JVM

​JVM,JRE,JDK三者的简朴总结【JAVA教程】,​JVM

本篇文章给人人带来的内容是关于JVM,JRE,JDK三者的简朴总结,有肯定的参考价值,有须要的朋侪能够参考一下,愿望对你有所协助。 JVM,JRE,JDK三者的简朴总结 1.见名诠释 Java假造机(JVM):Java virtual machine简称JVM;“virtual”中文意义...