ys memos

Blog

Javaの学習メモ


java

2021/03/22

これまでに C/C++,Python,また JavaScript などを触れてきたが,自分にとって今後 Java が必要になると予想して,Java を学習することにした.




ベースはほとんど変わらない印象である.少なくともint型はそのまま. C++ではautoを愛用していたが,Java では見当たらない.

int x = 0;
int y = 0, z = 0;
String str = "test";
double dx = 0.1;
boolean bl = false; // 注意! boolじゃないんだね

intbooleanは足せない. そのため,以下のような工夫が必要.

int x = 0;
boolean b = true;
if (b) {
	x++;
}

こちらも,基本的には変わらない印象.

しかし,空かどうかを条件にする際,==null!=nullが必要なようだ.

ListNode node

if (node != null) {
}

// これはダメ
//if (node) {
//}

驚いたのが,標準的な配列(?)にあたるint[]lengthメンバを持っていて,C++におけるvector<int>と同じように扱える点である.

おそらく,C++は C との互換性を維持するために,int[]を残したままvector<int>array<int>のような配列クラスを準備したのでは無いかと思った.

int[] v = new int[10];

int[] v = new

Arraysで配列のソートができる.

// import java.util.Arrays;

Arrays.sort(v);
return new int[] {0, 0};

C++のstd::coutと比較すると,個人的にはかなり面倒に感じた.

System.out.println(0);

こちらも基本的には C++と変わらない印象.

困ったことに,引数のデフォルト値がなさそうである.

そのため,C++や Python におけるデフォルト値のようなものを用いたい場合は,以下のようにオーバーロードを使った工夫が必要.

class Foo {
	public int baa(int x, int y) {
		return baa(x, y);
	}

	public int baa(int x, int y, int z) {
		return x + y + z;
	}
}

Java ではString型として文字列を扱うことができるようだ.

String str = "test";

str.length(); // 文字数 -> 4
str.charAt(0); // 要素アクセス -> 't' (何故`[]`でアクセスできないんだ・・・)

Java ではQueue型がある.

Queue<int> queue = new LinkedList<int>();
queue.add(0); // C++ std::queue のpush()に相当

int n1 = queue.element(); // C++ std::queueのfront()に相当
queue.remove(); // C++ std::queueのpop()に相当

queue.add(1); // C++ std::queue のpush()に相当
int n = queue.poll(); // C++ std::queue のfront()とpop()を同時に行う

個人的には,Queue<>.poll()が大好き.C++を使っていた時はstd::queue::front()std::queue::pop()の両方が必要だった処理が一発でできるのが魅力的だよね.


引数の内大きい方を返す.

longest = Math.max(longest, length); // 最大値の更新

関連タグを探す