问:如果main方法被声明为私有该怎么办?
回答:
该程序可以正确编译,但在运行时会显示“ Main方法不公开”。 信息。
问:在Java中按引用传递和按值传递是什么意思?
回答:
通过引用方式传递,传递地址本身而不传递值。 按值传递表示传递值的副本 。
问:如果您要覆盖对象的equals()方法,那么您可能还会考虑其他哪种方法?
回答:
hashCode()
问:什么是字节码?
要么
问:是什么使Java具有“编写一次即可在任何地方运行”的特性?
回答:
所有Java程序都被编译成包含字节码的类文件。 这些字节码可以在任何平台上运行,因此java被称为独立于平台的。
问:解释每个公共static void main(String args [])关键字的原因?
回答:
- public – main(..)是Java环境在执行程序时调用的第一个方法,因此必须可以从Java环境进行访问。 因此,访问说明符必须是公共的。
- static :Java环境应该能够在不创建类实例的情况下调用此方法,因此必须将该方法声明为static。
- void :main 不返回任何内容,因此返回类型必须为void
参数String表示在命令行中给出的参数类型,而arg是在命令行中给出的字符串数组。
问:==和.equals()有什么区别?
要么
问:==和等于之间有什么区别
要么
问:==和equals方法之间的区别
要么
问:您将使用什么来比较两个String变量–运算符==或方法equals()?
要么
问:在==运算符下,两个具有相同值的String对象怎么可能不相等?
回答:
==运算符比较两个对象,以确定它们是否是内存中的同一对象,即是否存在于同一内存位置。 两个String对象可能具有相同的值,但位于不同的内存区域中。
==比较引用,而.equals比较内容。 方法public boolean equals(Object obj)由Object类提供,并且可以重写。 仅当对象与自身比较时,默认实现才返回true,这等效于等于运算符==用于将别名与对象进行比较。 字符串,位集,日期和文件会覆盖equals()方法。 对于两个String对象,值相等意味着它们包含相同的字符序列。 对于Wrapper类,值相等意味着原始值相等。
public class EqualsTest {
public static void main(String[] args) {
String s1 = “abc”;
String s2 = s1;
String s5 = “abc”;
String s3 = new String(”abc”);
String s4 = new String(”abc”);
System.out.println(”== comparison : ” + (s1 == s5));
System.out.println(”== comparison : ” + (s1 == s2));
System.out.println(”Using equals method : ” + s1.equals(s2));
System.out.println(”== comparison : ” + s3 == s4);
System.out.println(”Using equals method : ” + s3.equals(s4));
}
}
输出量
== comparison : true
== comparison : true
Using equals method : true
false
Using equals method : true
问:如果从主方法的签名中删除了静态修饰符怎么办?
要么
问:如果我不提供String数组作为方法的参数怎么办?
回答:
程序编译。 但是在运行时会引发错误“ NoSuchMethodError”。
问:为什么将oracle 4型驱动程序命名为oracle瘦驱动程序?
回答:
Oracle提供了Type 4 JDBC驱动程序,称为Oracle“瘦”驱动程序。 该驱动程序包括自己的完全用Java编写的Oracle Net8的TCP / IP版本的实现,因此它是独立于平台的,可以在运行时下载到浏览器,并且在客户端不需要任何Oracle软件。 该驱动程序在服务器端需要一个TCP / IP侦听器,并且客户端连接字符串使用TCP / IP端口地址,而不是数据库名称的TNSNAMES条目。
您对java final关键字了解什么?
要么
问:什么是final,finalize()和final?
要么
问:什么是finalize()方法?
要么
问:班级或成员是决赛是什么意思?
回答:
- 最终 –声明常量
- 最终 –处理异常
- 完成 –帮助垃圾收集
接口中定义的变量是隐式最终的。 最终类不能扩展,即,最终类不能被子类化。 出于安全原因,使用String和Integer之类的基本类来完成此操作。 它还允许编译器进行一些优化,并使线程安全性更容易实现。 继承其类的最终方法时,不能覆盖该方法。 您不能更改最终变量(是常量)的值。 finalize()方法仅在销毁对象和收集垃圾之前使用。 最后,在异常处理中使用的关键字,无论是否引发异常都将执行。 例如,打开连接的关闭是在finally方法中完成的。
问:什么是Java API?
回答:
Java API是大量现成的软件组件的集合,这些组件提供了许多有用的功能,例如图形用户界面(GUI)小部件。
问:什么是GregorianCalendar类?
回答:
GregorianCalendar支持传统的西方日历。
问:什么是ResourceBundle类?
回答:
ResourceBundle类用于存储特定于语言环境的资源,这些资源可由程序加载,以根据正在其中运行程序的特定语言环境来定制程序的外观。
问:为什么Java中没有全局变量?
回答:
全局变量可全局访问。 由于以下原因,Java不支持全局可访问变量:
- 全局变量破坏了参照透明性
- 全局变量在命名空间中创建冲突 。
问:如何在Java程序中将String转换为Number?
回答:
Integer类的valueOf()函数用于将字符串转换为Number。 这是代码示例:
String numString = “1000″;
int id=Integer.valueOf(numString).intValue();
问:什么是SimpleTimeZone类?
回答:
SimpleTimeZone类提供对公历的支持。
问:while语句和do语句有什么区别?
回答:
while语句(预测试)在循环开始时进行检查,以查看是否应发生下一个循环迭代。 do while语句(测试后)在循环结束时进行检查,以查看是否应发生循环的下一次迭代。 do语句将始终至少执行一次循环主体。
问:什么是语言环境类?
回答:
Locale类用于根据特定地理,政治或文化区域的惯例来定制程序输出。
问:描述OOPS的原理。
回答:
oop的三个主要原理称为多态,继承和封装。
问:解释继承原则。
回答:
继承是一个对象获取另一对象的属性的过程。 继承允许反复使用经过良好测试的过程,并使更改一次完成并在所有相关位置生效
问:什么是隐式强制转换?
回答:
隐式转换是简单地将一个实体分配给另一个实体而没有对编译器的任何转换指导的过程。 在所有类型的转换中都不允许使用这种类型的转换,并且可能不适用于所有场景。
例
int i = 1000;
long j = i; //Implicit casting
问:sizeof是Java中的关键字吗?
回答:
sizeof不是关键字。
问:什么是本机方法?
回答:
本机方法是以Java以外的语言实现的方法。
问:在System.out.println()中,什么是System,out和println?
回答:
System是预定义的最终类,out是PrintStream对象,而println是out对象中的内置重载方法。
问:什么是封装,继承和多态性
要么
解释多态的不同形式。
回答:
简单的多态性意味着一个名字很多形式 。 多态使一个实体可以用作不同类型动作的通用类别。 具体行动取决于情况的确切性质。
多态性在Java中以三种不同的形式存在:
- 方法重载
- 通过继承重写方法
- 通过Java接口覆盖的方法
问:什么是显式强制转换?
回答:
在明确告知编译器有关转换对象的过程中进行显式转换。
例
long i = 700.20;
int j = (int) i; //Explicit casting
问:什么是Java虚拟机(JVM)?
回答:
Java虚拟机是可以移植到各种基于硬件的平台上的软件
问:您对向下转换了解什么?
回答:
向下转换的过程是指从通用类型转换为更具体的类型,即向下转换层次结构
问:什么是Java访问说明符?
要么
问:公共,私有,受保护和默认访问说明符之间有什么区别?
要么
问:访问修饰符有哪些不同类型?
回答:
访问说明符是确定对类成员的访问类型的关键字。 这些关键字用于允许对程序部分(例如函数和变量)进行特权。 这些是:
- 公开:所有班级均可使用
- 受保护的 :同一包和任何子类中的类可访问。
- 私人的:只能由他们所属的班级访问
- 默认值:它们所属的类和同一包中的子类可以访问
问:每个班级的超班是哪个班级?
回答:
宾语。
问:命名原始Java类型。
回答:
这8种基本类型是字节,字符,短型,整数,长型,浮点型,双精度型和布尔型。 附加是字符串。
问:静态变量和非静态变量有什么区别?
要么
问:什么是“
要么
问:什么是java中的static?
要么
问:什么是静态方法?
回答:
静态变量与整个类相关联,而不是与类的特定实例相关联。 每个对象将共享一个静态变量的通用副本,即,无论从哪个类创建多少个对象,每个类只有一个副本。 类变量或静态变量在类中使用static关键字声明。 它们在类外部声明并存储在静态内存中。 类变量主要用于常量。 静态变量始终由类名称调用。 该变量在程序启动时创建,并在程序停止时销毁。 类变量的范围与实例变量相同。 它的初始值与实例变量相同,并且在未初始化时(与数据类型相对应)获得默认值。 类似地,静态方法是属于该类而不是该类的任何对象的方法,并且不适用于某个对象,甚至不需要实例化该类的任何对象。 静态方法是隐式最终的,因为重写是基于对象的类型完成的,并且静态方法是附加到类而不是对象上的。 只要原始方法未声明为final,则超类中的静态方法可能会被子类中的另一个静态方法遮蔽。 但是,您不能用非静态方法覆盖静态方法。 换句话说,您不能将静态方法更改为子类中的实例方法。
非静态变量在每个对象实例中都具有唯一值。
问:布尔&运算符和&&运算符有什么区别?
回答:
如果对包含布尔&运算符的表达式求值,则将对两个操作数求值,而&&运算符是快捷运算符。 计算涉及&&运算符的表达式时,将计算第一个操作数。 如果第一个操作数返回值true,则对第二个操作数求值。 如果第一个操作数的评估结果为false,则跳过第二个操作数的评估结果。
问:Java如何处理整数上溢和下溢?
回答:
它使用结果的那些低位字节 ,这些字节可以适合该操作允许的类型的大小。
问:如果我写静态公共无效而不是公共静态无效怎么办?
回答:
程序编译并正常运行。
问:声明变量和定义变量有什么区别?
回答:
在声明中,我们仅提及变量的类型及其名称,而没有对其进行初始化。 定义意味着声明+初始化。 例如String s; 只是一个声明,而String s = new String(“ bob”); 或String s =“ bob”; 都是定义。
问:Java支持哪种类型的参数传递?
回答:
在Java中,参数(基元和对象)始终按值传递。 对于对象,对象引用本身通过值传递,因此原始引用和参数副本都引用同一对象。
问:解释封装原理。
回答:
封装是将数据和对数据进行操作的代码绑定或包装到单个实体中的过程。 这样可以确保数据不受外部接口和滥用的影响。 对象允许将过程与其数据一起封装,以减少潜在的干扰。 考虑封装的一种方法是作为保护性包装器,以防止代码和数据被包装器外部定义的其他代码任意访问。
问:您对变量有什么了解?
回答:
变量是一个命名的存储位置,可以在程序中轻松引用。 该变量用于保存数据,并且可以在程序执行过程中对其进行更改。
问:您对数字促销有什么了解?
回答:
数值提升是将较小的数字类型转换为较大的数字类型,以便可以进行积分和浮点运算。 在数字提升过程中,字节,字符和短值转换为整数值。 如果需要,int值也将转换为long值。 根据需要将long和float值转换为double值。
铸件有哪些类型?
回答:
将一种数据类型转换为另一种数据的过程称为强制转换。 Java有两种类型的转换: 这些是隐式转换和显式转换。
问:main方法中String数组的第一个参数是什么?
回答:
字符串数组为空。 它没有任何元素。 这与C / C ++不同,在C / C ++中,默认情况下的第一个元素是程序名称。 如果我们在命令行上不提供任何参数,则main方法的String数组将为空,但不能为null。
问:如何证明数组不是空而是空?
回答:
打印array.length。 它将打印0。这意味着它为空。 但是如果它为null,则在尝试打印array.length时将抛出NullPointerException。
问:一个应用程序可以有多个具有main方法的类吗?
回答:
是。 在启动应用程序时,我们提到要运行的类名。 JVM仅在您提到其名称的类中查找main方法。 因此,在具有main方法的多个类之间不存在冲突。
什么时候在Java中完全加载了静态块?
回答:
当类加载器将类带入JVM时,将加载静态变量。 不必必须创建对象。 静态变量在加载后将被分配内存空间。 静态块中的代码仅加载/执行一次,即在首次初始化该类时。 一个类可以具有任意数量的静态块。 静态块不是类的成员,它们没有return语句,因此不能直接调用它们。 不能包含此或超级。 它们主要用于初始化静态字段。
问:同一类中可以有多个主要方法吗?
回答:
我们可以有多个重载的main方法,但是只有一个具有以下签名的main方法:
public static void main(String[] args) {}
没有程序无法编译。 编译器说main方法已经在该类中定义。
问:解释Java虚拟机(JVM)的工作原理吗?
回答:
JVM是一台抽象的计算机,就像其他任何真正的计算机一样,它首先使用Compiler将.java文件转换为.class文件(.class就是字节码文件。),然后Interpreter读取字节码。
问:如何不使用第三个变量就交换两个变量?
回答:
添加两个变量并将其值分配给First变量。 用结果值减去第二个值。 并分配给Second变量。 用第二个变量的结果减去第一个变量的结果并分配给第一个变量。 例:
int a=5,b=10;a=a+b; b=a-b; a=a-b;
解决相同问题的另一种方法
您使用XOR交换。 (最佳方法),如使用上述方法,可能会超出/超出流量。 例如:
int a = 5; int b = 10;
a = a ^ b;
b = a ^ b;
a = a ^ b;
问:什么是数据封装?
回答:
可以通过在类(JAVABEAN)中创建“ get”和“ set”方法来使用封装,这些方法用于访问对象的字段。 通常,字段是私有的,而get和set方法是公共的。 封装可用于验证要存储的数据,对存储在一个或多个字段中的数据进行计算,或者用于自省(例如,在Struts中使用javabeans时通常就是这种情况)。 将数据和功能包装到单个单元中称为数据封装。 封装只不过是将数据和关联的方法包装到一个单元中,以便可以在关联的方法的帮助下访问数据。 封装提供数据安全性。 就是隐藏数据。
如何实施?
回答:
反射是在运行时内省类的功能和状态并在运行时动态进行处理的过程。 通过使用带有内置类(如类,方法,字段,构造函数等)的Reflection API可以支持此功能。示例:使用Java Reflection API,我们可以使用getName方法获取类名。
为什么
回答:
是的,JVM自己维护一个缓存。 它在HEAP上创建对象,但是对这些对象的引用在堆栈上。
问:什么是幻像记忆?
回答:
虚拟内存是错误的内存。 现实中不存在的内存。
问:一种方法可以是静态且同步的吗?
回答:
静态方法可以同步。 如果这样做,JVM将在java.lang上获得一个锁。
与对象关联的类实例。 类似于说:
synchronized(XYZ.class) {
}
问:String和StringTokenizer有什么区别?
回答:
StringTokenizer是用于拆分字符串的实用程序类。
例:
StringTokenizer st = new StringTokenizer(”Hello World”);
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
输出:
Hello
World
问题:什么是瞬时变量?
回答:
暂态变量不能序列化。 例如,如果某个变量在Serializable类中声明为临时的,并且该类已写入ObjectStream,则无法将变量的值写入流中,而是当从ObjectStream中检索该类时,变量的值将变为null 。
注意
transient
identifies a variable not to be written out when an
instance is serialized (It can't be copied to remove
system)
volatile
indicates that the field is used by synchronized threads
and that the compiler should not attempt to perform
optimizations with it.
When more than one thread share a (volatile) data it is
checked every time. Every thread keeps the latest value of volatile variable
问题:命名使用“边框布局”作为默认布局的容器吗?
回答:
使用“边框布局”作为默认设置的容器是:window,Frame和Dialog类。
问题:通过同步您了解什么?
回答:
同步是以一种方式控制多个线程对共享资源的访问的过程,即一次仅一个线程可以访问一个资源。 在非同步多线程应用程序中,一个线程可以修改共享对象,而另一个线程正在使用或更新对象的值。 同步可防止此类数据损坏。
例如同步功能:
public synchronized void Method1 () {
// Appropriate method-related code.
}
例如,在函数内部同步代码块:
public myFunction (){
synchronized (this) {
// Synchronized code here.
}
}
翻译自: https://www.javacodegeeks.com/2013/09/core-java-interview-questions.html