47
49

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Swift が気になる Java エンジニア向けのメモ

Posted at

はじめに

しばらく Android やっていましたが、最近 Swift 始めました。Java との比較をつらつらと書きますので、参考になれば幸いです。

個人用のメモであり、網羅的に書いているわけではありませんのでご了承ください。誤り等あればご指摘いただけると嬉しいです。

用語、キーワード

だいたいこんな感じの対比でしょうか。

Swift Java
プロパティ フィールド
プロトコル インタフェース
type static
self this
nil null

型宣言

Java

final String message1 = "Hello";
String message2 = "Hello";
String message3;

Swift

let message1 = "Hello"
var message2 = "Hello" // var message2 : String = "Hello" でもOK
var message3 : String // 宣言時に初期化しない場合は型を指定する

for

Java

int[] numbers = {100, 200, 300};
int sum = 0;
for (int i = 0; i < numbers.length; i++) {
  sum += numbers[i];
}

または

int[] numbers = {100, 200, 300};
int sum = 0;
for (int number : numbers) {
  sum += number;
}

Swift

var numbers = [100, 200, 300]
var sum = 0
for var i = 0; i < numbers.count; i++ {
  sum += numbers[i]
}

または

var numbers = [100, 200, 300]
var sum = 0
for i in 0..<numbers.count {
  sum += numbers[i]
}

または

var numbers = [100, 200, 300]
var sum = 0
for number in numbers {
  sum += number
}

Switch

Java

Swift は Java でいう break は不要。ただし、何もしない場合は break が必要。

switch (num) {
case 0:
    message = "case 0";
    break;
case 1:
case 2:
case 3:
    message = "case 1 or 2 or 3";
    break;
default:
    break;
}

Swift

switch num {
case 0:
    message = "case 0"
case 1, 2, 3:
    message = "case 1 or 2 or 3"
default:
    break
}

または

switch num {
case 0:
    message = "case 0"
case 1...3:
    message = "case 1 or 2 or 3"
default:
    break
}

配列

Java の ArrayList 相当の内容です(可変でない配列は let を指定する)。Java の対比コードは割愛します。

Swift

var animals = [String]()
animals += ["犬"] // 要素の追加 ["犬"]
animals += ["猫", "馬"] // 要素の追加 ["犬", "猫", "馬"]
animals.append("牛") // 要素の追加 ["犬", "猫", "馬", "牛"]
animals.removeAtIndex(0) // 指定箇所の要素の削除 ["猫", "馬", "牛"]
animals.insert("犬", atIndex: 0) // 位置を指定して要素を追加 ["犬", "猫", "馬", "牛"]
animals[1...2] = ["馬", "猫"] // 複数の要素を変更 ["犬", "馬", "猫", "牛"]

連想配列

Java

HashMap<String,String> fruits = new HashMap<String,String>();
fruits.put("apple", "りんご");
...
String fruit = fruits.get("apple");

Swift

var fruits: Dictionary<String, String>
fruits["apple"] = "りんご"
...
var fruit = fruits["apple"]

ダウンキャスト

Java

Object object = "message";
String message = (String) object;

Swift

var object : Any = "message"
var message = object as String

メソッド

注)swift は var キーワードがない場合 let として扱うため、引数に変更を加える場合は var キーワードをつける

Java

int countUp(int number) {
    return number + 1;
}

Swift

func countUp(number : Int) -> Int {
    return number + 1
}

継承

Java

class Dog extends Animal {
}

Swift

class Dog: Animal {
}
47
49
2

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
47
49

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?