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));
Résultat de l'exécution :
str1:1179395 | str2:1179395 false
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 ?
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
Quelles sont les méthodes courantes de la classe String ?
indexOf():返回指定字符的索引。 charAt():返回指定索引处的字符。 replace():字符串替换。 trim():去除字符串两端空白。 split():分割字符串,返回一个分割后的字符串数组。 getBytes():返回字符串的 byte 类型数组。 length():返回字符串长度。 toLowerCase():将字符串转成小写字母。 toUpperCase():将字符串转成大写字符。 substring():截取字符串。 equals():字符串比较。
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~"); } }
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 :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():写入文件。
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!