Maison > Java > JavaQuestions d'entretien > Questions d'entretien Java de base courantes

Questions d'entretien Java de base courantes

(*-*)浩
Libérer: 2019-12-28 16:05:09
original
2353 Les gens l'ont consulté

Questions d'entretien Java de base courantes

Quelle est la différence entre JDK et JRE ?

JDK : L'abréviation de Java Development Kit, kit d'outils de développement Java, fournit un environnement de développement Java et un environnement d'exécution.

JRE : L'abréviation de Java Runtime Environment, Java Runtime Environment, fournit l'environnement requis pour le fonctionnement de Java. (Étude recommandée : Questions d'entretien courantes sur Java)

Plus précisément, JDK inclut en fait JRE, et inclut également le compilateur javac qui compile le code source Java, et comprend également de nombreux débogages de programmes Java et Outils d'analyse. Pour faire simple : si vous devez exécuter des programmes Java, il vous suffit d'installer JRE. Si vous devez écrire des programmes Java, vous devez installer JDK. Quelle est la différence entre

== et égal ?

Les effets de == sont différents pour les types de base et les types de référence, comme suit :

Types de base : ce qui est comparé est de savoir si les valeurs sont les mêmes

Type de référence : ce qui est comparé est de savoir si les références sont identiques ;

quals est essentiellement ==, mais String et Integer remplacent la méthode égale et la transforment en une comparaison de valeurs.

== Pour les types de base, il s'agit d'une comparaison de valeurs, pour les types référence, il s'agit d'une comparaison de référence ; et égal est une comparaison de référence par défaut, mais de nombreuses classes remplacent la méthode égale, comme String, Integer. etc. le transforme en une comparaison de valeurs, donc dans des circonstances normales, égal compare si les valeurs sont égales.

Si le hashCode() des deux objets est le même, alors equals() doit également être vrai, n'est-ce pas ?

Non, le hashCode() des deux objets est le même, et equals() peut ne pas être vrai.

String str1 = "通话";
String str2 = "重地";
System.out.println(String.format("str1:%d | str2:%d",  str1.hashCode(),str2.hashCode()));
System.out.println(str1.equals(str2));
Copier après la connexion

Résultat de l'exécution :

str1:1179395 | str2:1179395
false
Copier après la connexion

Interprétation du code : Évidemment, le hashCode() de "call" et "powerful place" sont les mêmes, mais equals() est faux , Parce que dans une table de hachage, égal hashCode() signifie que les valeurs de hachage de deux paires clé-valeur sont égales. Cependant, des valeurs de hachage égales ne signifient pas nécessairement que les paires clé-valeur sont égales.

Quel est le rôle de final en java ?

La classe finale modifiée est appelée la classe finale, et cette classe ne peut pas être héritée.

Les méthodes finales modifiées ne peuvent pas être remplacées.

Les variables finales modifiées sont appelées constantes. Les constantes doivent être initialisées. Après l'initialisation, la valeur ne peut pas être modifiée.

À quoi est égal Math.round(-1.5) en Java ?

est égal à -1.

String est-il un type de données de base ?

String n'est pas un type de base. Il existe 8 types de base : byte, boolean, char, short, int, float, long, double et String est un objet.

Quelles sont les classes pour les chaînes d'exploitation en Java ? Quelle est la différence entre eux ?

Les classes qui opèrent sur les chaînes incluent : String, StringBuffer et StringBuilder.

La différence entre String et StringBuffer et StringBuilder est que String déclare un objet immuable. Chaque opération générera un nouvel objet String puis pointera le pointeur vers le nouvel objet String, tandis que StringBuffer et StringBuilder peuvent être utilisés dans le objet original. L'opération est effectuée sur la base de , il est donc préférable de ne pas utiliser String lorsque le contenu de la chaîne est fréquemment modifié.

La plus grande différence entre StringBuffer et StringBuilder est que StringBuffer est thread-safe, tandis que StringBuilder n'est pas thread-safe, mais les performances de StringBuilder sont supérieures à celles de StringBuffer, il est donc recommandé d'utiliser StringBuilder en un seul -threaded et dans un environnement multithread. Il est recommandé d'utiliser StringBuffer.

String str="i" est-il identique à String str=new String("i") ?

est différent car la méthode d'allocation de mémoire est différente. String str="i", la machine virtuelle Java l'attribuera au pool de constantes ; et String str=new String("i") sera alloué à la mémoire tas.

Comment inverser une chaîne ?

Utilisez la méthode reverse() de StringBuilder ou stringBuffer.

Exemple de code :

// StringBuffer reverse
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append("abcdefg");
System.out.println(stringBuffer.reverse()); // gfedcba
// StringBuilder reverse
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("abcdefg");
System.out.println(stringBuilder.reverse()); // gfedcba
Copier après la connexion

Quelles sont les méthodes courantes de la classe String ?

indexOf():返回指定字符的索引。
charAt():返回指定索引处的字符。
replace():字符串替换。
trim():去除字符串两端空白。
split():分割字符串,返回一个分割后的字符串数组。
getBytes():返回字符串的 byte 类型数组。
length():返回字符串长度。
toLowerCase():将字符串转成小写字母。
toUpperCase():将字符串转成大写字符。
substring():截取字符串。
equals():字符串比较。
Copier après la connexion

Les classes abstraites doivent-elles avoir des méthodes abstraites ?

Non, les classes abstraites ne doivent pas nécessairement avoir des méthodes abstraites.

Exemple de code :

abstract class Cat {
    public static void sayHi() {
        System.out.println("hi~");
    }
}
Copier après la connexion

Dans le code ci-dessus, la classe abstraite n'a pas de méthodes abstraites mais elle peut s'exécuter normalement.

Quelles sont les différences entre les classes ordinaires et les classes abstraites ?


Les classes ordinaires ne peuvent pas contenir de méthodes abstraites, tandis que les classes abstraites peuvent contenir des méthodes abstraites.

Les classes abstraites ne peuvent pas être instanciées directement, mais les classes ordinaires peuvent être instanciées directement.

Les classes abstraites peuvent-elles être modifiées avec final ?

Non, définir une classe abstraite permet à d'autres classes d'en hériter. Si elle est définie comme final, la classe ne peut pas être héritée, ce qui provoquera des conflits entre elles, donc final ne peut pas modifier la classe abstraite. , comme le montre la figure ci-dessous , l'éditeur affichera également un message d'erreur :

Questions dentretien Java de base courantes

Quelle est la différence entre une interface et une classe abstraite ?

Implémentation : les sous-classes des classes abstraites utilisent des extensions pour hériter ; les interfaces doivent utiliser des implémentations pour implémenter l'interface.

构造函数:抽象类可以有构造函数;接口不能有。

main 方法:抽象类可以有 main 方法,并且我们能运行它;接口不能有 main 方法。

实现数量:类可以实现很多个接口;但是只能继承一个抽象类。

访问修饰符:接口中的方法默认使用 public 修饰;抽象类中的方法可以是任意访问修饰符。

java 中 IO 流分为几种?

按功能来分:输入流(input)、输出流(output)。

按类型来分:字节流和字符流。

字节流和字符流的区别是:字节流按 8 位传输以字节为单位输入输出数据,字符流按 16 位传输以字符为单位输入输出数据。

BIO、NIO、AIO 有什么区别?

BIO:Block IO 同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简单使用方便,并发处理能力低。

NIO:New IO 同步非阻塞 IO,是传统 IO 的升级,客户端和服务器端通过 Channel(通道)通讯,实现了多路复用。

AIO:Asynchronous IO 是 NIO 的升级,也叫 NIO2,实现了异步非堵塞 IO ,异步 IO 的操作基于事件和回调机制。

Files的常用方法都有哪些?

Files.exists():检测文件路径是否存在。
Files.createFile():创建文件。
Files.createDirectory():创建文件夹。
Files.delete():删除一个文件或目录。
Files.copy():复制文件。
Files.move():移动文件。
Files.size():查看文件个数。
Files.read():读取文件。
Files.write():写入文件。
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal