(継続的に更新)終了後のjava超詳細な表面2019年12月18日

ディレクトリ

初版の準備の学生を強制するのは難しい、2020年の春に移動する準備ができて

Java SEの

どのようにJavaがサポートされている正規表現の操作について話してください?

マッチ()、でReplaceAll()、replaceFirstという()、スプリット():JavaのStringクラスは、以下を含む正規表現の操作をサポートします。また、Javaのは、次のような正規表現の操作のすべての種類の豊富なAPIを提供Patternクラス正規表現オブジェクトで表すことができます。

import java.util.regex.Matcher;
import java.util.regex.Pattern;
class RegExpTest {
    public static void main(String[] args) {
        String str = "成都市(成华区)(武侯区)(高新区)";
        Pattern p = Pattern.compile(".*?(?=\\()");
        Matcher m = p.matcher(str);
        if(m.find()) {
            System.out.println(m.group());
        }
    }
}

簡単に正規表現とその用途を記載してください。

処理文字列をプログラミングする場合、文字列に沿っていくつかの複雑なルールを見つける必要があることが多いです。正規表現のツールは、これらのルールを記述するために使用されます。言い換えれば、正規表現は、コードテキストのルールを記録することです。処理時間をコンピュータの詳細については値が、文字列ではなく、正規表現と文字列マッチング処理をするとき、最も強力なツールに行われます。

JavaとJavaSciprtを比較してください?

JavaScriptとJavaは2は、二つの異なる製品を開発しています。Javaは、インターネットアプリケーション開発のために特に適した旧サン・マイクロシステムズ導入しているオブジェクト指向プログラミング言語であり、JavaScriptはNetscapeの製品実行しているWebページに埋め込むことができる機能の開発を拡大するためには、Netscapeブラウザでありますオブジェクトベースとイベント駆動型解釈言語。そして以前はオークとして知られているJava言語、; JavaScriptが前身LiveScriptです。
次に、以下の比較を行うための2つの言語間の類似点と相違点は:

  • オブジェクトベースおよびオブジェクト指向:Javaは、簡単な手順であっても、開発、真のオブジェクト指向言語である、あなたがオブジェクトを設計する必要があります。JavaScriptは、ネットワークの独立を作るために使用することができる言語をスクリプトの種類、複合体とユーザーの相互作用でありますソフトウェア。これは、オブジェクトベース自体を使用する設計者にとって非常に豊富な内部オブジェクトを提供するイベント駆動型(イベントドリブン)プログラミング言語、(オブジェクトベース)です。
  • 解釈とコンパイル:実行前にJavaソースコードは、コンパイルする必要があります。JavaScriptは、ブラウザの実行によって解釈コンパイルされていない、そのソースコードの必要性、解釈されたプログラミング言語です。(ほとんどすべてのブラウザでは、現在のJavaScriptの動作効率を高めるために、JIT(タイムコンパイラ)技術を使用します)
  • 弱い変数の強く型付けされた変数と型:;実行時に、変数の使用が明を沈黙することができます前であっても、JavaScriptの変数が弱い型指定されているJavaScriptインタープリタチェックJavaは強くコンパイルする前に、すべての変数が陳述をしなければならないという変数の確認を入力しました推論されたデータ型。
  • コードの形式は同じではありません。

Javaで、現在、複数のネストされたループの外にジャンプする方法は?

このようなAとしてタグ最も外側のループを追加する前に、次にAを破る;複数のループから飛び出すことができます。
(でのJavaサポートは、休憩をタブ付きや文を継続し、CおよびC ++ goto文にいくらか同様の役割が、それはあなたをさせませんので、後藤同じを使用しないようにするように、あなたは、タブ付きブレークを使用しないようにして継続すべきですこの構文は本当によく知っているされていないので、プログラムは、よりエレガントになり、何回でも)、逆の効果を持っています

違いについて話して&&&?

&演算子は、2つの方法で:(1)ビットと;(2)論理AND。&&演算子は、短絡および動作です。
左&&上の式の値がfalseの場合、右側の式が動作しなくなります、ので、&&と呼ばれる短絡回路動作があります。

例:
ログインユーザ認証を決定することがnullでなく、空の文字列でない場合例えば、:!ユーザー名= nullの&& username.equals(のように記述しなければならない 「」)、 両方の順序を交換することはできませんが、&演算子を使用することはできません!最初の条件が満たされていない場合ので、文字列を比較することができないか、NullPointerExceptionが発生します等しいです。

int型と整数の違いは何ですか?自動入力ボックスとは何ですか?

Javaは(ほぼ純粋なオブジェクト指向プログラミング言語であるが、プログラミングまたは基本データ型の導入を容易にするために、そのオブジェクトの動作としてこれらの基本データ型にできるようにするために、各基本データ型のJavaは、パッケージの対応するタイプを導入しましたラッパークラス)、INTラッパークラスは、2つの交換可能とすることができるように、自動始動Java5ボクシング/アンボクシング機構の導入から、整数です。

オートボクシングJavaコンパイラは、基本データ型との間にあるとオブジェクトラッパーの対応するタイプの変換を行います。例:int型はダブルダブルに変換され、その上、整数に変換されます。一方自動解凍です。

特定の出力が文字列をエンコードする方法について話してください?このようなISO8859-1などなど

Public String translate (String str) {
     String tempStr = “”;
     try {
     tempStr = new String(str.getBytes(“ISO-8859-1″), “GBK”);
     tempStr = tempStr.trim();
     }
     catch (Exception e) {
     System.err.println(e.getMessage());
     }
     return tempStr;
 }

文字列とStringBufferの、のStringBuilderの違いを教えてください

  • Stringクラス宣言の内容が不変であると、そのメモリポイントの変化のみ、オブジェクトStringBufferクラスの内容を変更することができるが。ストリングクラスには、イニシエータへの変更は、新しい文字列の文字列オブジェクトを生成し、不変クラスです。
  • StringBufferのために、直接ではなく、割り当て文字列を介して物体像の完全な具体化に適用される、それはコンストラクタの方法によって行われなければなりません。
  • StringBufferの列処理が実行されると、それはメモリ内に新しいオブジェクトを生成しない文字列クラスの使用に優れています。だから、実際の使用では、文字列は、多くの場合など、挿入、削除などの変更を行うために必要であれば、いくつかのために、より適切であるとのStringBufferを使用しています。
  • StringBuilder、StringBufferをStringBuilderの間の最大の違いは、スレッドセーフな方法ではありません
  • StringBufferのStringBuilderのは、速度の利点を持っていると比較すると、それはほとんどの場合、StringBuilderクラスを使用することをお勧めしますが、アプリケーションの場合は、スレッドセーフ必要とされ、あなたはStringBufferクラスを使用する必要があります。

ランダウの記号(ビッグO記法)について話してください

最悪の場合には- (>無限n)が大きいOシンボルは漸近的性能を示します。
ビッグOアルゴリズムのデータ構造増加の要素、サイズと性能を記述する際にどのように最悪のシナリオで良いです。
これは、一般的に説明し、アルゴリズムの時間計算量のスペースの複雑することができます。

あなたはのアレイ(配列)、リスト(ArrayListの)の違いについて話しますか?ときに私の代わりのArrayListの配列を使うべきなのでしょうか?

配列とArrayListの違い:

  • アレイは、ArrayListのが唯一のオブジェクト・タイプが含まれ、プリ​​ミティブ型とオブジェクト型を含めることができます。
  • アレイのサイズは、ArrayListのサイズは動的であり、固定されています。
  • などArrayListの方法およびより多くの機能を提供し、:のaddAll()のremoveAll()、イテレータ()などが挙げられます。
  • コーディング作業を軽減する自動包装セットを使用してデータの基本的なタイプについて。しかし、このように、固定サイズの基本的なデータ型を扱うときには比較的遅いです。

したがって、ArrayListのを使用して不確定要素の数であれば、
要素の固定数、及び基本データ型場合、アレイは、速い速度、無自動ボクシングとアンボクシングを使用してもよいです。

あなたが値渡しと参照渡しされているかを説明してください?

値は、元の変数のコピーは影響しない変数の変更のコピーを渡すという点で基本的な変数に渡される
オブジェクトのアドレスのコピーを渡すという点で、一般的にオブジェクト変数に参照渡しをし、ない元のオブジェクトそのもの。したがって、オブジェクトへの参照は、元のオブジェクトを変更同時に動作します。

4.0から3.6 = 0.40000001この現象があり、なぜあなたは説明してもらえますか?

この理由は単純ではない正確バイナリ小数バイナリ小数点表現10、第1算出処理コンピュータ10における変換計算におけるバイナリ小数バイナリである、プロセスエラーが発生しました。

ラムダ式の長所と短所を教えてください。

利点:

  1. シンプル。
  2. コンピューティング平行するのは非常に簡単。
  3. これは、プログラミングのトレンドの未来を表すことができます。

短所:

  1. 計算平行でない場合、速い従来の速度より多くの時間がループについて計算されていません。(並列コンピューティングは、ショー効率の利点の前にウォームアップが必要な場合があります)
  2. デバッグするのは容易ではありません。
  3. 他のプログラマは、ラムダ式を習得していない場合は、プログラマが他の言語を理解するために、コードは簡単ではありません。

Javaの、==、等号とhashCode差との関係

参考ブログ:https://blog.csdn.net/justloveyou_/article/details/52464440

比較である「==」あなたが署名するかを説明してください?

「==」メモリアドレスは2つのオブジェクトが同一の基準(同じアドレスを指す)である場合、オペレータはtrueを返し、2つのオブジェクトを比較します。

「==」の基本的なタイプの両面場合は、値が等しいかどうかの比較です。

あなたが等しい()メソッドを使用して、2つの文字列が同じであるかどうかを比較したいのであれば。

ケースのequals()メソッドを詳しく説明してください。

クラスに上書きされることはありません、それは等しい()メソッドは、アドレス比較対象です。

1,来源  
    equals方法是基类Object中的实例方法,因此对所有继承于Object的类都会有该方法。   
    Object类中equals方法的实现:
    public boolean equals(Object obj) {
        return (this == obj);
    }
    很显然,在Object类中,equals方法是用来比较两个对象的引用是否相等,即是否指向同一个对象。
2,equals方法的作用
    初衷 : 判断两个对象的 content 是否相同
    必要的时候,我们需要重写该方法,避免违背本意,且要遵循一些原则
    例子:String 类重写了 equals 方法
    使用equals方法,内部实现分为三个步骤:
        先 比较引用是否相同(是否为同一对象),
        再 判断类型是否一致(是否为同一类型),
        最后 比较内容是否一致
    Java 中所有内置的类的 equals 方法的实现步骤均是如此,特别是诸如 Integer,Double 等包装器类。
    
    要遵循的原则:
    对称性: 如果x.equals(y)返回是“true”,那么y.equals(x)也应该返回是“true” ;
    自反性: x.equals(x)必须返回是“true” ;
    类推性: 如果x.equals(y)返回是“true”,而且y.equals(z)返回是“true”,那么z.equals(x)也应该返回是“true” ;
    一致性: 如果x.equals(y)返回是“true”,只要x和y内容一直不变,不管你重复x.equals(y)多少次,返回都是“true” ;
    对称性: 如果x.equals(y)返回是“true”,那么y.equals(x)也应该返回是“true”。
    任何情况下,x.equals(null)【应使用关系比较符 ==】,永远返回是“false”;x.equals(和x不同类型的对象)永远返回是“false”

hashCodeメソッドの下で手の込んだしてください

1、hashCode 的来源 
  hashCode 方法是基类Object中的实例native方法,因此对所有继承于Object的类都会有该方法。 
   
  在 Object类 中的声明(native方法暗示这些方法是有实现体的,但并不提供实现体,
  因为其实现体是由非java语言在外面实现的):
  
    public native int hashCode();

2、hashCode 简述 
    在 Java 中,由 Object 类定义的 hashCode 方法会针对不同的对象返回不同的整数。
    (这是通过将该对象的内部地址转换成一个整数来实现的,但是 JavaTM 编程语言不需要这种实现技巧)。
    
    要想进一步了解 hashCode 的作用,我们必须先要了解Java中的容器,因为 HashCode
    只是在需要用到哈希算法的数据结构中才有用,比如 HashSet, HashMap 和 Hashtable。
    
    数组+链表的结构下:
    先调用这个元素的 hashCode 方法,然后根据所得到的值计算出元素应该在数组的位置。
    如果这个位置上没有元素,那么直接将它存储在这个位置上;
    如果这个位置上已经有元素了,那么调用它的equals方法与新元素进行比较:相同的话就不存了,
    否则,将其存在这个位置对应的链表中(Java中HashSet,HashMap和Hashtable的实现总将元素放到链表的表头)。

オーバーライドイコールとhashCodeメソッド

前提:スピーキングのhashCodeメソッドは、Objectクラスのメソッドですどちらも、言わなければならないでしょう等しいです。オブジェクト・クラスは、すべてのクラスの基本クラスであるため、ので、すべてのクラスが2つのメソッドをオーバーライドすることができます。

  • 原則1:x.equals(y)を返す "真" 場合、XとYのhashCode()等しくなければなりません。
  • 原則2:x.equals(y)を返す「偽」は、その後、xとyのhashCode()は、おそらく等しい、不均等が存在し得る場合。
  • 原則3:xとyのハッシュコード()と等しくない場合、x.equals(y)は「偽」に戻るであろう。
  • 原則4:一般的に、この方法は、ユーザによって起動されるが、平均的なユーザーではないハッシュコードメソッドを呼び出すことであろう等しいです。
  • 原則5:オブジェクトのコレクションの要素としてオブジェクトタイプ、オブジェクトが(独自の等号を有していなければならない)とhashCode()デザインだけでなく、前述のいくつかの原則を遵守します。

ストリングクラスオーバーライドのhashCode()メソッドは、ハッシュアドレスオブジェクトは、必ずしも実際のメモリアドレスではありません。

hashCode()およびequals()メソッドの接続とは何ですかを教えてください?

➀等しい(同一の)オブジェクトが等しいハッシュコード(又はハッシュコード)を有していなければなりません。
➁のhashCode 2つのオブジェクトが同じであれば、彼らは必ずしも同じではありません。

セクション

  • ハッシュコードシステムは、速やかに目標を検索するために使用されます
  • オブジェクトが一致基準に意図されているかどうかを決定するために使用される方法に等しいです
  • 方法およびハッシュコードメソッドに等しいオーバーライドする場合に使用されるメンバ変数は、方法は、ハッシュコードの方法で使用されなければならないに等しいが、後者のように、比較の用語として前者は使用されているデータの性質、情報項目の要約を生成します両者の整合性を確保するために、同じ

あなたがのhashCode()を書き換えるために説明してください場合は、オブジェクト、そして、のhashCode()どのように計算?

オブジェクトのハッシュコード方法は、CまたはC ++言語の実装を使用して、ローカル方法では、この方法は、オブジェクトのメモリアドレスを返します。

おすすめ

転載: www.cnblogs.com/baizihua/p/12061503.html