0
0

More than 1 year has passed since last update.

JavaエンジニアによるJavaScript入門1(変数、定数、配列、連想配列)

Posted at

JavaScriptとJavaの違い

1. 型
言語 型付けルール 説明
JavaScript 動的型付け言語 変数の中身の型を自動で判定
Java 静的型付け言語 変数の中身の型を手動で判定
2. JavaScriptは全てオブジェクトで扱う

「オブジェクトとは」
下記を持ったもののことをいう

  • 値(変数/定数)(プロパティ)
  • 関数(メソッド)

「typeof 変数」でオブジェクトのタイプを調べることができる。
下記の変数「num」は「number」オブジェクト
下記の変数「str」は「string」オブジェクト

let num = 1;
console.log('オブジェクトのタイプは' + typeof num);
let str = 'aaa';
console.log('オブジェクトのタイプは' + typeof str);

【コンソール出力結果】

オブジェクトのタイプはnumber
オブジェクトのタイプはstring

変数

JavaScript

JavaScriptは全てオブジェクトで扱う。変数の宣言はどのデータ型でも下記のものが使用される。

使える書き方か 書き方 ES 使用 特徴
var ES5  基本使用しない   変数の値を直接書き換えられる
後から値の計算や結合はできる
let ES6  基本使用する 変数の値を直接書き換えられない
後から値の計算や結合はできる
「ES5」

基本「var」はもう使わない(IEはこちらを使っている)
変数の値を直接書き換えられる。
後から値の計算や結合等はできる。

var test = 1;
var test = 'aaa';
console.log(test);
test += 'bbb';
console.log(test);

【コンソール出力結果】

aaa
aaabbb
「ES6」

基本は「let」を使用する(chromeはこちらを使う)
変数の値を直接書き換えられない。
後から値の計算や結合等はできる。

変数の書き換え
let test = 1;
let test = 'aaa';
console.log('test= ' + test);

【コンソール出力結果】

Uncaught SyntaxError: Identifier 'test' has already been declared
変数の値への結合
let test = 1;
console.log('typeof= ' + typeof test);
test += 'aaa';
console.log('test= ' + test);
console.log('typeof= ' + typeof test);

【コンソール出力結果】

typeof= number
test= 1aaa
typeof= string

Java

データ型を意識した上で変数の宣言をする必要がある

int num = 1;
String str = "文字";
System.out.println(num);
System.out.println(str);

【コンソール出力結果】

1
文字

定数

JavaScript

const TEST = '定数';
console.log('TEST = ' + TEST);

【コンソール出力結果】

TEST = 定数

Java

final String TEST = "定数";
System.out.println("TEST = " + TEST);

【コンソール出力結果】

TEST = 定数

配列

JavaScript

1次元配列
const arrayTest = ['','',''];
console.log(arrayTest);

【コンソール出力結果】

(3) ['赤', '青', '黄']

2次元配列
const arrayTest2 = [
    ['','',''],
    ['','','']
];
console.log(arrayTest2);

【コンソール出力結果】

(2) [Array(3), Array(3)]
0: (3) ['赤', '青', '黄']
1: (3) ['白', '黒', '緑']

2次元配列のlength、値の取得
const arrayTest2 = [
    ['','',''],
    ['','','']
];
console.log(arrayTest2.length);
console.log(arrayTest2[1].length);
console.log(arrayTest2[0][1]);

【コンソール出力結果】

2
3
青

Java

1次元配列
int[] numArray = {10, 20, 30};
for(int i:numArray) {
	System.out.println(i);
}

【コンソール出力結果】

10
20
30

2次元配列
// 2次元配列の宣言と格納
String[][] arrayTest = { { "赤", "青", "黄" }, { "白", "黒", "緑" } };
// 配列の各要素の個数分配列の宣言
int[] arraysNum = new int[arrayTest.length];
// 配列の各要素の個数を1次元配列に格納
for (int i = 0; i < arrayTest.length; i++) {
	arraysNum[i] = arrayTest[i].length;
}
// 2次元配列の出力
for (int i = 0; i < arrayTest.length; i++) {
	for (int j = 0; j < arraysNum[i]; j++) {
		System.out.println(arrayTest[i][j]);
	}
}

【コンソール出力結果】

赤
青
黄
白
黒
緑

※補足
ArraysクラスのdeepToStringメソッドを使うとprintlnメソッドでfor文を使用しなくても多次元配列を出力表示することができる(1次元配列も出力可能)

String[][] arrayTest = { { "赤", "青", "黄" }, { "白", "黒", "緑" } };
System.out.println(Arrays.deepToString(arrayTest));

【コンソール出力結果】

[[赤, 青, 黄], [白, 黒, 緑]]

2次元配列のlength、値の取得
String[][] arrayTest = { { "赤", "青", "黄" }, { "白", "黒", "緑" } };
System.out.println(arrayTest.length);
System.out.println(arrayTest[0].length);
System.out.println(arrayTest[0][0]);

【コンソール出力結果】

2
3
青

連想配列

JavaScript

const associativeArray = {
    'name':'taro',
    'age':10,
    'origin':'tokyo'
};
console.log(associativeArray);

【コンソール出力結果】

{name: 'taro', age: 10, origin: 'tokyo'}
連想配列の値の取得
const associativeArray = {
    'name':'taro',
    'age':10,
    'origin':'tokyo'
};
//書き方は2通り
console.log(associativeArray['name']);
console.log(associativeArray.age);

【コンソール出力結果】

taro
10

連想配列の中に連想配列
const member = {
    'honda':{
        'bloodType':'A',
        'age':10
    },
    'kagawa':{
        'bloodType':'B',
        'age':10
    }
};
console.log(member);

【コンソール出力結果】

{honda: {…}, kagawa: {…}}
honda: {bloodType: 'A', age: 10}
kagawa: {bloodType: 'B', age: 10}

連想配列の中に連想配列の値の取得方法
const member = {
    'honda':{
        'bloodType':'A',
        'age':10
    },
    'kagawa':{
        'bloodType':'B',
        'age':10
    }
};
console.log(member.honda.bloodType);

【コンソール出力結果】

A

Java

Javaで連想配列を使うときは、「HashMap」を使う。

HashMap<String, String> map = new HashMap<>();
map.put("apple", "りんご");
map.put("banana", "バナナ");
map.put("peanut", "ピーナッツ");
System.out.println(map.entrySet());

【コンソール出力結果】

[banana=バナナ, apple=りんご, peanut=ピーナッツ]
連想配列の値の取得
HashMap<String, String> map = new HashMap<>();
map.put("apple", "りんご");
map.put("banana", "バナナ");
map.put("peanut", "ピーナッツ");
// Mapからデータを取得する
System.out.println(map.get("apple"));
System.out.println(map.get("banana"));
System.out.println(map.get("peanut"));

【コンソール出力結果】

りんご
バナナ
ピーナッツ
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0