Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

Java と ActionScript 3.0 の違い:文法編

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2010/10/07 14:00

 この記事は、Javaに精通した開発者の方に、ActionScript 3.0(以下AS3)がどのような言語なのか、どこがJavaと異なっているのか(あるいは同じなのか)を一覧できるようまとめたものです。今回は「文法編」として、Java開発者が引っかかりやすいと思われる点を中心に記述します。

目次

 この記事は、Javaに精通した開発者の方に、ActionScript 3.0(以下AS3)がどのような言語なのか、どこがJavaと異なっているのか(あるいは同じなのか)を一覧できるようまとめたものです。

 主にAS3の静的な側面をまとめた、『文法編』(この記事)および『クラス宣言編』(Adobe Developer Connectionにて公開中)と、動的な側面をまとめた『属性操作編』(近日公開予定)および『振舞い編』(近日公開予定)の4編に分けて、Java開発者が引っかかりやすいと思われる点を中心に記述しました。

 厳密な言語解説よりは、まずAS3の概要が分かること、を目的に書かれています。さらに詳しい言語仕様についてはActionScript 3.0の学習をご覧ください。

文法編の内容

 文法編では、要素と宣言に関わる基本的な文法を扱います。とはいっても、JavaとAS3の文法はいろいろな面で似ています。そのため、この記事では、特に違いを意識する必要がありそうな項目に絞って説明します。

 下は、JavaとAS3それぞれのクラス宣言の例です。ひとめでは、どちらのサンプルか分からない程度に似ています。

package foo;
import foopack.*;
public class Foo extends FooBase implements IFoo
{
  private String str = "文字列";
  public int bar(boolean b)
  {
    return 0;
  }
}
package foo
{
import foopack.*;
public class Foo extends FooBase implements IFoo
{
  private var str:String = "文字列";
  public function bar(b:Boolean):int
  {
    return 0;
  }
}
}

要素/文法

セミコロン(;)

 Javaは文末にセミコロンが必要です。

foo = 0;

 AS3 はセミコロンが必須ではありません。一行に複数の文を書く場合は、セミコロンで区切ります。

foo = 0
bar = 1; baz = 2

 文法上は不要でも、可読性のため、セミコロンを付けることが推奨です。

null,undefined,NaN,

 Javaでは初期化されていないオブジェクトの値はnullです。

Object foo;
Number num;
System.out.println(foo); // 'null' が出力される
System.out.println(num); // 'null' が出力される

 AS3はオブジェクトの型により"null","undefined","NaN"と値が変わります。

var foo;
var bar:Object;
var baz:*;
var num:Number;
trace(foo); // 'undefined' が出力される
trace(bar); // 'null' が出力される
trace(baz); // 'undefined' が出力される
trace(num); // 'NaN' が出力される

 型注釈の無い場合のみ、値がundefinedになります。変数の型注釈に*記号を指定すると、型注釈を使用しない場合と同じ扱いになります。その他、変数のデフォルト値については、アドビのヘルプ内のデフォルト値一覧をご覧ください。

プリミティブ型

 Javaには8つのプリミティブ型があります。例えばintはプリミティブ型です。intをオブジェクトとして使用したい場合はラッパークラスであるIntegerを使います。

int i = 123;
Integer n = new Integer(i);
n.toString();

 AS3ではプリミティブ型もオブジェクトです。そのため、int型の変数に対してもメソッドを呼び出すことができます。当然、ラッパークラスは存在しません。

var i:int = 123;
i.toString();

 AS3のプリミティブ型に関する詳細は、アドビヘルプのデータ型のまとめをご覧ください。

キャスト

 Javaのキャストは、変数の前に括弧付きで型を指定します。

float f = 5.0;
int i = (int)f; // i は 5

 AS3のキャストは関数呼び出しと同じ形式です。詳細はアドビヘルプ内の「型変換」の節に詳しく書かれています。

var f:Number = 5.0;
var i:int = int(f); // i は 5

 AS3では、データ型の検査にas演算子を使うことができます。

var f:Number = 5.0;
var i:int = f as int; // i は 5

 式がデータ型に属さない場合、asは値を変換せずnullを返します。そのため、キャストのようにランタイムエラーが起きないという利点があります。ただし、基本データ型(Boolean,Number,int,uint)の値の変換が目的の場合には向きません。

var f:Number = 5.5;
var i:int = f as int; // i は 0
trace(f as int); // null が出力される

instanceof

 Javaでは、ある変数が特定の型に属しているかを知る場合instanceofを使います。

String str;
if (str instanceof Number)
{
  ...
}

 AS3では、このような場合、is演算子を使います。

var str:String;
if (str is Number)
{
  ...
}

  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 上条 晃宏(カミジョウ アキヒロ)

    アドビにてFlashプラットフォーム上のユーザー体験やアーキテクチャデザインのコンサルティングを担当、数多くのFlash/Flexプロジェクトに携わる。

バックナンバー

連載:Adobe Developer Connection

もっと読む

おすすめ記事

All contents copyright © 2006-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5