・参照オブジェクト(参照型)
ヒープ上に割り当てられる。
割り当ては値オブジェクトよりも高速。
・値オブジェクト(値型)
ヒープ上ではなく、データセグメントまたはスタック上に割り当てられる。
Structureキーワードを使用して作成する。
座標などの数値データを持つ小さなオブジェクトの作成に適する。
・Structure
構造体。
コンストラクタ、メソッド、プロパティ等を含めることができる。
※デフォルトコンストラクタ(引数なし)は、CLRが構造体をゼロ初期化するために使用するため、定義できない。
・値型と、参照型の違い
Public Class Form1
'構造体を定義
Public Structure MyStruct
Public num As Integer
Public Sub New(ByVal i As Integer)
num = i
End Sub
'引数なしのコンストラクタは定義できない
'Public Sub New()
' num = 100
'End Sub
End Structure
'クラスを定義
Private Class MyCls
Public num As Integer
Public Sub New(ByVal i As Integer)
num = i
End Sub
'引数なしのコンストラクタを定義できる
'(デフォルトコンストラクタのオーバーライド)
Public Sub New()
num = 100
End Sub
End Class
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim stc1 As MyStruct
Debug.WriteLine("stc1.num:" & stc1.num) '0
Dim stc2 As New MyStruct(200)
Debug.WriteLine("stc2.num:" & stc2.num) '200
Debug.WriteLine("------------------------------------------------")
Dim stc3 As MyStruct
stc3 = stc2
Debug.WriteLine("要素がコピーされた:" & stc3.num) '200
stc3.num = 400
Debug.WriteLine("コピー元の要素は変化しない:" & stc2.num) '200
Debug.WriteLine("コピー先の要素は変化:" & stc3.num) '400
Debug.WriteLine("------------------------------------------------")
Dim obj As Object
obj = stc3
Debug.WriteLine("参照型へコピー可能:" & obj.num) '400
obj.num = 600
Debug.WriteLine("コピー元の要素は変化しない:" & stc3.num) '400
Debug.WriteLine("コピー先の要素は変化:" & obj.num) '600
Debug.WriteLine("------------------------------------------------")
Dim cls1 As New MyCls
Debug.WriteLine("cls1.num:" & cls1.num) '100
Dim cls2 As New MyCls(300)
Debug.WriteLine("cls2.num:" & cls2.num) '300
Debug.WriteLine("------------------------------------------------")
Dim cls3 As MyCls
cls3 = cls2
Debug.WriteLine("参照された:" & cls3.num) '300
cls3.num = 500
Debug.WriteLine("参照元の要素も変化:" & cls2.num) '500
Debug.WriteLine("参照先の要素も変化:" & cls3.num) '500
End Sub
End Class
ヒープ上に割り当てられる。
割り当ては値オブジェクトよりも高速。
・値オブジェクト(値型)
ヒープ上ではなく、データセグメントまたはスタック上に割り当てられる。
Structureキーワードを使用して作成する。
座標などの数値データを持つ小さなオブジェクトの作成に適する。
・Structure
構造体。
コンストラクタ、メソッド、プロパティ等を含めることができる。
※デフォルトコンストラクタ(引数なし)は、CLRが構造体をゼロ初期化するために使用するため、定義できない。
・値型と、参照型の違い
Public Class Form1
'構造体を定義
Public Structure MyStruct
Public num As Integer
Public Sub New(ByVal i As Integer)
num = i
End Sub
'引数なしのコンストラクタは定義できない
'Public Sub New()
' num = 100
'End Sub
End Structure
'クラスを定義
Private Class MyCls
Public num As Integer
Public Sub New(ByVal i As Integer)
num = i
End Sub
'引数なしのコンストラクタを定義できる
'(デフォルトコンストラクタのオーバーライド)
Public Sub New()
num = 100
End Sub
End Class
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim stc1 As MyStruct
Debug.WriteLine("stc1.num:" & stc1.num) '0
Dim stc2 As New MyStruct(200)
Debug.WriteLine("stc2.num:" & stc2.num) '200
Debug.WriteLine("------------------------------------------------")
Dim stc3 As MyStruct
stc3 = stc2
Debug.WriteLine("要素がコピーされた:" & stc3.num) '200
stc3.num = 400
Debug.WriteLine("コピー元の要素は変化しない:" & stc2.num) '200
Debug.WriteLine("コピー先の要素は変化:" & stc3.num) '400
Debug.WriteLine("------------------------------------------------")
Dim obj As Object
obj = stc3
Debug.WriteLine("参照型へコピー可能:" & obj.num) '400
obj.num = 600
Debug.WriteLine("コピー元の要素は変化しない:" & stc3.num) '400
Debug.WriteLine("コピー先の要素は変化:" & obj.num) '600
Debug.WriteLine("------------------------------------------------")
Dim cls1 As New MyCls
Debug.WriteLine("cls1.num:" & cls1.num) '100
Dim cls2 As New MyCls(300)
Debug.WriteLine("cls2.num:" & cls2.num) '300
Debug.WriteLine("------------------------------------------------")
Dim cls3 As MyCls
cls3 = cls2
Debug.WriteLine("参照された:" & cls3.num) '300
cls3.num = 500
Debug.WriteLine("参照元の要素も変化:" & cls2.num) '500
Debug.WriteLine("参照先の要素も変化:" & cls3.num) '500
End Sub
End Class
メモ。
IsDate("昭和63年8月1日")・・・TRUE
IsDate("昭和64年8月1日")・・・TRUE
IsDate("昭和65年8月1日")・・・FALSE
西暦→和暦変換時は、昭和64年と平成1年の切り替わりは正しく行われる模様。
IsDate("昭和63年8月1日")・・・TRUE
IsDate("昭和64年8月1日")・・・TRUE
IsDate("昭和65年8月1日")・・・FALSE
西暦→和暦変換時は、昭和64年と平成1年の切り替わりは正しく行われる模様。
Eclipseから、Javadocを作成する方法。
1. パッケージエクスプローラで、Javadocを作成したいプロジェクトを選択し、右クリック
2. [エクスポート]選択
3. [エクスポート先の選択]画面で、 Java > Javadoc を選択し、[次へ]
4. [Javadocコマンド]の[構成]ボタンをクリック
5. jdkインストールフォルダ\bin\javadoc.exe を選択
6. [Javadocが生成される型の選択]で、Javadocに含めたいパッケージにチェックを入れる
7. [次の可視性を持つメンバーのJavadocを作成]で、Javadocに含めたい可視性を選択
(ここで選択した可視性以上のものが含まれます。例:[Protected]→protectedとpublicのクラスとメンバ)
8. その他のオプションを設定する場合は設定
9. [終了]で作成
ワークスペース\プロジェクトのフォルダ\doc 内にJavadocが作成されます。
Javadocの書き方が正しくないと、コンソールに警告が赤い字で表示されます。
1. パッケージエクスプローラで、Javadocを作成したいプロジェクトを選択し、右クリック
2. [エクスポート]選択
3. [エクスポート先の選択]画面で、 Java > Javadoc を選択し、[次へ]
4. [Javadocコマンド]の[構成]ボタンをクリック
5. jdkインストールフォルダ\bin\javadoc.exe を選択
6. [Javadocが生成される型の選択]で、Javadocに含めたいパッケージにチェックを入れる
7. [次の可視性を持つメンバーのJavadocを作成]で、Javadocに含めたい可視性を選択
(ここで選択した可視性以上のものが含まれます。例:[Protected]→protectedとpublicのクラスとメンバ)
8. その他のオプションを設定する場合は設定
9. [終了]で作成
ワークスペース\プロジェクトのフォルダ\doc 内にJavadocが作成されます。
Javadocの書き方が正しくないと、コンソールに警告が赤い字で表示されます。
ショートカットキーにあたる機能(キーボード操作で特定の機能を呼び出す)を、javaでは『ニーモニック』と呼ぶようです。
ニーモニックは、通常『Alt + キー1つ』で呼び出されます。
また、そのメニュー階層が見えている必要があります。
・JMenu
jmenu.setMnemonic(KeyEvent.VK_F); // Alt + F で呼び出し
・JMenuItem
jmenuItem.setMnemonic(KeyEvent.VK_E); // Alt + Eで呼び出し
---------------------------------------------------------------
『Ctrl + キー』のような組み合わせで呼び出したい時、また、階層が見えていなくても呼び出したい時は、アクセラレータを設定します。
・JMenu
setAccelerator()を呼び出すとError
・JMenuItem
jmenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W, KeyEvent.CTRL_DOWN_MASK)); // Ctrl + W で呼び出し
ニーモニックは、通常『Alt + キー1つ』で呼び出されます。
また、そのメニュー階層が見えている必要があります。
・JMenu
jmenu.setMnemonic(KeyEvent.VK_F); // Alt + F で呼び出し
・JMenuItem
jmenuItem.setMnemonic(KeyEvent.VK_E); // Alt + Eで呼び出し
---------------------------------------------------------------
『Ctrl + キー』のような組み合わせで呼び出したい時、また、階層が見えていなくても呼び出したい時は、アクセラレータを設定します。
・JMenu
setAccelerator()を呼び出すとError
・JMenuItem
jmenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W, KeyEvent.CTRL_DOWN_MASK)); // Ctrl + W で呼び出し
[EDemoBoard] Error initializing EDemoBoard: java.lang.RuntimeException: EDemoBoard ATmega bootloader has unknown signature = 0
が出た時の対処法。
参考:
https://www.sunspotworld.com/forums/viewtopic.php?f=23&t=2463&start=0
上記エラーが出ると、SunSpotのリセットがうまくかからない、プロジェクトをDeployしても実行できないなどの現象が起こります。
が出た時の対処法。
参考:
https://www.sunspotworld.com/forums/viewtopic.php?f=23&t=2463&start=0
上記エラーが出ると、SunSpotのリセットがうまくかからない、プロジェクトをDeployしても実行できないなどの現象が起こります。




