AOPについてのメモ
AOPとは?
Aspect Oriented Programming = アスペクト指向プログラミング
クラスの持つ責務に基づいて、クラス内に本質的な処理だけを記述するために利用する技術です。
本質的な処理以外の、複数のクラスにまたがって記述される処理を横断的(Aspect)関心事
と呼びます。
横断的関心事 = 共通処理という考え方でおk
主な横断的関心事は
- ログ出力
- トランザクション管理
- 例外処理
AOPを導入することによって、本質的な処理と横断的関心ごとを分離して、共通で利用するためのソースコードを記述することができるため、誤った処理を減らし、可読性の良いソースコードにすることができます。
オブジェクト指向では、うまく分離できない横断的関心事を補助機能として利用されるプログラミングパラダイムです。
つまりどうゆうこと?
AOPを使うことによって、
元のソースコードには一切手をくわえずに、 新たな共通処理を追加することができるようになります。
なんとなくJSON
~ お品書き ~
JSONってなんぞや?
JavaScript Object Notationの略!
Google先生に翻訳してもらうと
JavaScriptオブジェクト表記
という意味らしいです。
13日の金曜日に来る人とは違うようです。良かったですね。
JSONの紹介
によると
https://www.json.org/json-ja.html
軽量のデータ交換フォーマットです。
人間にとって読み書きが容易で、マシンにとって簡単にパースや生成を行える形式です。
JavaScriptプログラミング言語(ECMA-262標準第3版 1999年12月)の一部をベースに作られています。
JSONはWebサービスなどでよく使われています。テキストベースなので様々なプログラミング言語から簡単に扱えるので便利ですね〜
自分もC#でUnityでアプリ開発をしている時に、テキストベースで保存できるUnityのPlayerprefsという機能でJSON形式にしてよく理解しないまま利用していました。
他のデータ形式であるXMLに比べてシンプルで読みやすいです!!!ガチで!
データサイズも小さいよ!
JSONの構造
JSONには二つの構造を基にして記述されます。
- 名前 : 値のペア
- 値の順序付きリスト
名前 : 値のペア
はキーとバリューのように扱われています。
また値の順序付きリスト
は配列として扱われます。
文字コードはUTF-8
JOSNの書き方
{ } この中括弧の中に、ダブルクォーテーション( " " )で囲んだ変数名と値をコロン( : ) で区切って記述します。
{ "name" : "MARIO" }
複数用意したい場合はカンマ( , )で連結します。
{ "name" : "MARIO" , "age" : 26 }
配列を使いたい場合は[ ]を利用します。
{ "name" : "MARIO" , "age" : 26, "friends" : ["Luigi", "Kinopio"] }
簡単ですね!
よくある間違い(T T)
- 変数名をダブルクォーテーションで囲っていない
- ダブルクォーテーションじゃなくてシングルクォーテーション使ってしまう
扱える値
- 文字列
- ダブルクォーテーションで囲ったもの
- 数値
- 整数、浮動小数点数
- null
- 値が空のも(全て小文字)
- true , false
- 論理値(全て小文字)
- オブジェクト
- { } 中括弧で囲んだもの
- 配列
- カギカッコ [ ] で囲んだもの
締め
今回は、なんとなくJSONについて触れました。
しかしJSONスキーマとか、いろいろ難しそうなものもありそうで、
JSONの沼は深そうです。
【Java】Integer a = 10, b =10; a == b は true or false ?
問題 1
public class Main { public static void main(String[] args) { Integer a = 10; Integer b = 10; System.out.println(a == b); } }
出力結果は true or false どちらだと思いますか?
正解は...
true
解説は次の問題の後で!
問題 2
public class Main { public static void main(String[] args) { Integer a = 1000; Integer b = 1000; System.out.println(a == b); } }
出力結果は true or false どちらだと思いますか?
正解は...
false
全問正解できましたか?
正解できた方は、JVMの気持ちを理解していて素晴らしいと思います。
自分は間違えました。
解説もどき
JVMはメモリを節約しようと、常日頃から努力しています。
Integerの小さい値がよく使われていることを発見しました。
ある程度の数字なら自分たちであらかじめ用意しておいて、いくつもメモリを使用させないようにしようとしました。
ある程度と言うのは、1バイト(8bit)までです。
-127から127までの数字はJVM内部で保持されています。
そのため
public class Main { public static void main(String[] args) { Integer a = -127; Integer b = -127; System.out.println(a == b); } }
も
true
です。
と言うことは
public class Main { public static void main(String[] args) { Integer a = 128; Integer b = 128; System.out.println(a == b); } }
は
false
になります。
1000は8bit以上なのでfalseと言うことになります。
まとめ