JavaとObjective-Cの比較一覧まとめ【iPhone|Android】

JUnitについての書籍が遂に発売します!
Java開発時のユニットテストを加速する「JUnit速効レシピ」


iPhone/iPad/iPodアプリ開発者がAndroidアプリも開発する場合。
Androidアプリ開発者がiPhone/iPad/iPodアプリも開発する場合。
大元のアプリがあって、相互にコンバートする場合。

その様なシーンで使える、JavaObjective-Cで、同じ事をしようとした時に、
それぞれの言語ではどの様に実装するのか。そういった比較表を作成しました。

コンバート時や、同時開発時に参考にして下さい。


どんどん充実させる為に、随時追記していきます。

  1. 事前準備と大前提
  2. JavaとObjective-Cで使用される主な型名の違い等
  3. 定数の宣言
  4. コメントアウト
  5. 型変換関係
  6. 配列,連想配列関係
  7. 文字列関係
  8. 時刻関係
  9. その他

事前準備と大前提


iPhoneアプリ開発で使うプログラミング言語

Objective-C

Android開発で使うプログラミング言語

Java

iPhoneアプリ開発で使う開発環境

Xcode

Android開発で使う開発環境

Eclipse

iPhoneアプリ開発で使う基本的なSDK

UIKitSDK

Android開発で使う基本的なSDK

AndroidSDK



JavaとObjective-Cで使用される主な型名の違い等


文字

char(1バイト)
char(javaのcharは2バイト)

真偽値

BOOL(YES,NO)
boolean(true,false)

整数オブジェクト

NSInteger
Integer

文字列オブジェクト

NSString*
String

可変文字列

NSMutableString*
StringBuilder

汎用オブジェクト

id
Object

メソッドセレクタ

SEL
Method

配列

NSArray*
ArrayList

可変配列

NSMutableArray*
ArrayList

連想配列

NSDictionary*
HashMap

可変連想配列

NSMutableDictionary*
HashMap

バイト配列

NSMutableData*
ArrayList
byte>

バイト

NSData*
Byte

クラス

Class
Class

viewコントローラ

UIViewController*
Activity




定数の宣言


#define
public static final


コメントアウト


// 一行コメントアウト
/*
 複数行コメントアウト
*/
// 一行コメントアウト
/*
 複数行コメントアウト
*/


型変換関係


数値を文字列へ変換

[num stringValue];
String.valueOf( num );

文字列からint型へ変換

[str intValue];
Integer.parseInt( str );

文字列からfloat型へ変換

[str floatValue];
Float.parseFloat( str );

文字列からdouble型へ変換

[str doubleValue];
Double.parseDouble( str );

文字列からboolean型へ変換

[str boolValue];
Boolean.valueOf( str );

配列,連想配列関係


配列

NSArray*
ArrayList

連想配列

NSDictionary*
HashMap

配列から値を取得する

[arr objectAtIndex:0];
arr.get( 0 );

配列から値を削除する

[arr removeObjectAtIndex:0];
arr.remove( 0 );

配列の末尾を削除する

[arr removeLastObject];
arr.remove( array.size() - 1 );

配列から全ての値を削除する

[arr removeAllObjects];
arr.clear();

配列の末尾へ値を追加する

[arr addObject:@"AAA"];
arr.add("AAA");

連想配列へ値を追加する

[hash setObject:value forKey:key];
hash.put( key, value );

連想配列から、添え字を元に値を取得する

[hash objectForKey:key];
hash.get(key);

配列の要素数を取得する

[arr count];
arr.size();

最初に一致する要素のインデックス番号を取得する

[arr indexOfObject:key];
arr.indexOf( key );

配列の中身を置き換える

[arr replaceObjectAtIndex:index_no withObject:@"newdata"];
arr.set( index_no, "newdata" );

配列の中身を取得しながらを順に処理する

for( NSString* str in arr ){}
for( String str : arr ){}





文字列関係


文字数の取得

[str length];
str.length();

指定文字数以降を取得

[str substringFromIndex:3];
str.substring( 3 );

指定文字数までを取得

[str substringToIndex:3];
str.substring( 0, 3 );

指定文字数から指定文字数分を取得

[str substringWithRange:NSMakeRange( 2, 5 )];
str.substring( 2, 2+5 ); // 文字数分ではなくて、第一引数から第二引数の間を返却

指定された位置にある文字を取得

[str substringWithRange:NSMakeRange( 3, 1 )];
str.charAt( 3 );

文字列を比較して等しいかどうか調べる

if( [str isEqualToString:@"ABC"] );
if( str.equals( "ABC" ) );

文字列が等しいか比較する

if( [str compare:@"ABC"] );
if( str.equals( "ABC" ) );

前後の空白を除去する(トリム処理)

[str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
str.trim();

指定文字が出現する場所取得

[str rangeOfString:@"abc"];
str.indexOf( 'abc' );

指定文字が出現する場所取得(後ろから)

[str rangeOfString:@"abc" options:NSBackwardsSearch];
str.lastIndexOf( 'abc' );

指定文字列を小文字へ変換する

[str lowercaseString];
str.toLowerCase();

指定文字列を大文字へ変換する

[str uppercaseString];
str.toUpperCase();

文字列の末尾に文字列を追加する

[str appendString:@"string"];
str.concat( "string" );

文字列を置換する

[str stringByReplacingOccurrencesOfString: @"abc" withString: @"def"];
str.replace( "abc", "def");

正規表現により最初に見つけた指定文字列を置換する

stringByReplacingMatchesInString
str.replaceFirst( "abc", "def");

正規表現により見つけた全ての文字列を置換する

stringByReplacingMatchesInString
str.replaceAll( "abc", "def");

指定文字列で始まっている?

[str hasPrefix:@"string"];
str.startsWith( "string" );

指定文字列で終わっている?

[str hasSuffix:@"string"];
str.endsWith( "string" );

文字列の途中の文字列を挿入する

NSMutableString* ms =  [NSMutableString stringWithString:@"abcdefghijk"];
[ms insertString:@"★" atIndex:3];
StringBuilder sb = new StringBuilder( "abcdefghijk" );
String string = new String( sb.insert( 3, "★" ).toString() );





時刻関係


現在時刻を取得する

NSDate* date = [NSDate date];
Date date = new Date();

時刻用のフォーマットを定義する

NSDateFormatter* formatter = [[[NSDateFormatter alloc] init] autorelease];
[formatter setDateFormat:@"yyyy/MM/dd HH:mm:ss"];
SimpleDateFormat formatter = new SimpleDateFormat( "yyyy/MM/dd hh:mm:ss SSS" );

時刻情報に対して表示するフォーマットを適用して文字列へ変換する

NSString* date_string = [formatter stringFromDate:date];
String date_string = formatter.format(date);

現在時刻をフォーマットして文字列へ

NSDate* date = [NSDate date];
NSDateFormatter* formatter = [[[NSDateFormatter alloc] init] autorelease];
[formatter setDateFormat:@"yyyy/MM/dd HH:mm:ss"];
NSString* date_string = [formatter stringFromDate:date];
Date date = new Date();
SimpleDateFormat formatter = new SimpleDateFormat( "yyyy/MM/dd hh:mm:ss" );
String date_string = formatter.format(date);



その他


クラスを取得する

[myClass class]
myClass.class


JUnitについての書籍が遂に発売します!
Java開発時のユニットテストを加速する「JUnit速効レシピ」

コメントをお待ちしています

人気の投稿

Category

Algorithm (2) Android (8) ASP/aspx (1) Blogger (2) C/C++ (1) Chrome (5) CSS (9) Firefox (4) Fortran (1) Google (9) GoogleMap (2) HTML (12) IE (3) Information (4) iOS (2) iPhone/iPad/iPod (2) Java (6) JavaScript (16) jQuery (9) JSP (1) LifeRecipe (5) Linux (2) Macintosh (2) MapKit (4) Marketing (7) MySQL (3) NAMAZU (2) Objective-C (7) Other (7) Perl (1) PHP (9) Python (1) RSS/Atom (2) Ruby (1) Safari (2) SEO (11) Smarty (2) SQL (2) Tex (1) Three.js (1) Twitter (1) TwitterLog (313) UIKit (5) Unix (1) VBA/VBS (1) Windows (5) WordPress (3) Writing (5) XAMPP (1) XML (1) Yahoo (2) ZendFramework2 (14)

Archives