わすれるまえのきろく

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書く事で広告が消せます。

PageTop

参照型と値型

・参照オブジェクト(参照型)
  ヒープ上に割り当てられる。
  割り当ては値オブジェクトよりも高速。

・値オブジェクト(値型)
  ヒープ上ではなく、データセグメントまたはスタック上に割り当てられる。
  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

PageTop

和暦について

メモ。

IsDate("昭和63年8月1日")・・・TRUE
IsDate("昭和64年8月1日")・・・TRUE
IsDate("昭和65年8月1日")・・・FALSE

西暦→和暦変換時は、昭和64年と平成1年の切り替わりは正しく行われる模様。

PageTop

EclipseからJavadocを作成

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の書き方が正しくないと、コンソールに警告が赤い字で表示されます。


PageTop

JMenu, JMenuItem にショートカットキーを設定する

ショートカットキーにあたる機能(キーボード操作で特定の機能を呼び出す)を、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 で呼び出し

PageTop

[EDemoBoard] Error

[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しても実行できないなどの現象が起こります。

PageTop