基礎知識

C++のコーディングの基本
//aisatsu.cpp
#include
#include
using namespace std;

int main()
{
string name;
cout << "こんにちは、どなたですか?" << endl;  cin >> name;
cout << name << "さん、よろしくお願いします。" << endl; } cout 画面 cin キーボード endl 行終端⁺改行 以上はiostreamに入っているが、実際はstd::cout、std::cin、std::endlなので、 省略表記の為にusing namespace文でstdを登録している。

カテゴリー: C++ | タグ: , | コメントする

文字列(String)

文字列の宣言はString
String str = “abc”;

文字列長を得る(length)
Javaの文字コードはUnicodeなので、日本語の全角文字も1文字として数える。
String str = “ABCDEFG”;
System.out.println(str.length());

等しいかどうか調べる
==演算子は文字には使えないので、equals(str)を使用。
String str = “ABC”;
if (str.equals(“ABC”)) { … }
大文字・小文字を無視して比較する場合は equalsIgnoreCase(str)
String str = “ABC”;
if (str.equals(“abc”)) { … }

n番目の文字を得る(charAt)
0を基点としてn番目の文字を返す。
String str = “ABCDEFG”;
System.out.println(str.charAt(2));

指定文字が出現する場所を得る(indexOf)
文字列の中で文字chが最初に出現する位置を、0基点の文字数で返す。見つからない時は -1が帰る。
String str = “ABCDEFG”;
System.out.println(str.indexOf(‘C’));

文字の代わりに文字列を指定することも可能。
String str = “ABCDEFG”;
System.out.println(str.indexOf(“DEF”));

第2引数としてnを指定すると、n番目以降の場所から探す。
String str = “ABCABCABC”;
System.out.println(str.indexOf(‘A’, 2));

lastIndexOf(ch) は、文字列の後ろから探す。
String str = “ABCABCABC”;
System.out.println(str.lastIndexOf(‘A’));

文字列を分割する(split)
正規表現 reg で文字列を分割し、その配列を返す。
String[] strs = “2003/05/19”.split(“/”);
for (int i = 0; i < strs.length; i++) { System.out.println(strs[i]); } エスケープシーケンス \n 改行コード \t タブ文字 \\ バックスラッシュ \' シングルクォーテーション \" ダブルクォーテーション \uxxxx Unicode xxxx の文字 例)"\u3042"

カテゴリー: Java | タグ: , , , , , | コメントする

変数

値を保存しておくメモリに名前をつけたもの。型宣言と変数名を記述。
class クラス名 {
int a;
}

定数(static final)
変数を下記に様に記述し、変更不可能な定数とする。定数は通常大文字で表記。
class Math {
public static final double PI = 3.14159265358979323846;
}

自分自身(this)
クラスメソッドの中で自分自身を示す特別な変数名。下記の例ではPersonクラスのインスタンス自身を示す。
class Person {
String name;
int age;
Person(String name, int age) {
this.name = name;
this.age = age;
}
}

配列
例)一次元配列
class Test {
public static void main(String[] args) {
int[] xx = new int[3];
xx[0] = 100;
xx[1] = 200;
xx[2] = 300;
}
}

int[] xx = { 100, 200, 300 };も可

配列の個数は length で参照。
int n = xx.length;

例)二次元配列
int[][] xx = new int[3][5];
String[][] ss = {
{ “Sun”, “Sunday” },
{ “Mon”, “Monday” }
};

オブジェクトの配列を生成するには、配列生成後、それぞれの要素も個別に生成する必要がある。
ClassA[] xx = new ClassA[3];
xx[0] = new ClassA();
xx[1] = new ClassA();
xx[2] = new ClassA();

カテゴリー: Java | タグ: , , , , , , | コメントする

メソッド

クラス内部で定義される機能
class クラス名 {
型 メソッド名(引数) {
:
}
}

例)x と y の合計を返却するメソッド
class MethodTest {
public static void main(String[] args) {
System.out.println(add(3, 5));
}
static int add(int x, int y) {
return (x + y);
}
}

引数
型と引数名のペアを0個以上指定

戻り値
returnの戻り値として呼び出し元に返す。

カテゴリー: Java | タグ: , | コメントする

インタフェース

インタフェース は、ある機能を実現するクラスが必ず実装するべきメソッドの名前や型といった作法のみを定義するもの。インタフェースで定義されるメソッド(抽象メソッド)の実体は implements を用いた側のクラスで実装。
interface InterfaceA {
public abstract void methodA(String msg);
public abstract void methodB(int x);
}

class InterfaceTest implements InterfaceA {
public static void main(String[] args) {
InterfaceTest o = new InterfaceTest();
o.methodA(“ABC”);
o.methodB(123);
}
public void methodA(String msg) {
System.out.println(msg);
}
public void methodB(int x) {
System.out.println(x);
}
}

インタフェース修飾子
public、abstract、strictfp を指定することができる。

カテゴリー: Java | タグ: , | コメントする

クラス

クラス(class)
オブジェクト(インスタンス)が持つ、属性(アトリビュート、プロパティ)や、メソッド(関数、ファンクション)などを定義する。
class クラス名 {
型 属性;
:
型 メソッド() { … }
:
}

クラスのインスタンス化(new)
あるクラスのインスタンスをnewを使って作成する。
TestClass o = new TestClass();

クラスの例
Person クラスは、myName と myAge という属性を持っています。SetName()、GetName()、SetAge()、GetAge() というメソッドを持っています。
class Person {
String myName;
int myAge;
public void SetName(String name) {
myName = name;
}
public String GetName() {
return myName;
}
public void SetAge(int age) {
myAge = age;
}
public int GetAge() {
return myAge;
}
}

このクラスをインスタンス(田中さん、鈴木さん)を作って利用する。
class PersonTest {
public static void main(String[] args) {
Person tanaka = new Person(); // 田中さんオブジェクトを作る
tanaka.SetName(“Tanaka”); // 田中さんの名前を設定する
tanaka.SetAge(26); // 田中さんの年齢を設定する

Person suzuki = new Person(); // 鈴木さんオブジェクトを作る
suzuki.SetName(“Suzuki”); // 鈴木さんの名前を設定する
suzuki.SetAge(32); // 鈴木さんの年齢を設定する

System.out.println(tanaka.GetName());
System.out.println(tanaka.GetAge());
System.out.println(suzuki.GetName());
System.out.println(suzuki.GetAge());
}
}

クラスの継承(extends)
あるクラスのメンバ変数やメソッドを継承した サブクラス(子クラス)の定義にはextends を使用。
下記例ではPerson クラスを継承する Member クラスを定義している。Memberクラスは Personクラスを継承しているので、myName、myAge などの属性や、GetName()、SetName() などのメソッドを引き継ぎ、加えてmyNumberやSetNumber()などの属性やメソッドを備えている。
class Member extends Person {
int myNumber;
public void SetNumber(int number) {
myNumber = number;
}
public int GetNumber() {
return myNumber;
}
}

親クラスの参照(super)
親クラスのコンストラクタは暗黙的には呼ばれないため、下記のようにsuperを使って明示的に呼び出してやる必要がある。
class Member extends Person {
Member() {
super(“tanaka”); // 親クラスのコンストラクタを呼び出す
super.SetAge(26); // 親クラスのメソッドを呼び出す
return super.myName; // 親クラスの属性を参照する
}
}

クラスに属しているか調べる(instanceof)
ブジェクト(インスタンス)が、指定したクラスまたはその上位のクラスに属しているかどうかを調べます。
MyButton b = new MyButton();
if (b instanceof Button) {
System.out.println(“属してる”);
} else {
System.out.println(“属していない”);
}

カテゴリー: Java | タグ: , , , , | コメントする

修飾子

アクセス修飾子(public, protected, private)
public は「すべてのクラスからの参照を許す」、protected は「他ファイル・他クラスからのアクセスをプロテクトする」、private は「自クラスからのアクセスしか許さない」

スタティック修飾子(static)
クラスがインスタンス化されていなくても、そのクラス、メソッド、変数などを参照可能。
// static 宣言されていれば
x = java.lang.Math.sin(y); // 直接呼び出せる
// static 宣言されていなければ
java.lang.Math m = new java.lang.Math(); // インスタンス化が必要
x = m.sin(y);

ファイナル修飾子(final)
final は上書きされないことを意味します。
クラスに用いた場合はサブクラスを定義できないことを、メソッドに用いた場合はサブクラスでメソッドをオーバーロードできないことを、変数に用いた場合は誰もその変数を変更できないことを意味する。

抽象修飾子(abstract)
クラス、インタフェース、メソッドが抽象的なものであり、不完全なものであることを示す。メソッド名、引数の型などのみを定義し、サブクラスが必ず実装しなくてはならない機能を明確にしておくのが主な利用目的。
抽象クラス はそのままではインスタンス化することができず、必ずサブクラスを定義して不完全なメソッドの実体を定義してから使用する必要があります。抽象クラスは通常、ひとつ以上の 抽象メソッドを含みます。抽象メソッドはメソッド名、引数の型のみが定義されていますので、どこかでその中身を定義する必要があります。

ネイティブ修飾子(native)
メソッドが ネイティブメソッド であることを示す。ネイテブメソッドは型、メソッド名、引数の型といった作法のみを定義するもので、C言語など他の言語を用いてその中身を実装する必要がある。

同期修飾子(synchronized)
メソッドがマルチスレッド環境で実行される場合、メソッドのインスタンスを対象に排他制御が行われる。ひとつのインスタンスが複数のスレッドを持つ場合は排他制御が行われ、スレッドが複数のインスタンスで実行される場合の排他制御は行われない。

一時的修飾子(transient)
一時的な変数であり、ディスクに保存したりネットワークで送信するための、オブジェクト情報のバイトストリームへの自動変換(シリアライズ)の対象外となる。

揮発性修飾子(volatile)

厳密浮動小数修飾子(strictfp)
浮動小数点演算がプラットフォームに依存しない

定数修飾子(const)
C/C++ 言語などで値を変更することができない変数。現在未使用

カテゴリー: Java | タグ: , , , , , , , , , | コメントする

制御構文

if( ) { }
if( ) { } else { }
if( ) { } else if { } else { }

for( ) { }

While( ) { }
do { } while ( );

switch () {
case 1:
break;
case 2:
break;
default;
break;
}
case 文の値には変数を指定することはできない、固定値のみ。

break
for、while、doループやcase文の残りの処理を飛ばし、自分の含まれるループ処理を抜けだす。ラベル(任意の名前)を指定することにより、多重のループを一度に抜け出すこともできる。
loop1: for (i = 0; i < 10; i++) { for (j = 0; j < 10; j++) { if ((i == 1) && (j == 5)) { break loop1; } } } continue for、while、doループの残りの処理を飛ばし、次のループを開始する。下記の例ではiが5のときはprintlnを行わずi=6のループに移る。ラベル(任意の名前)で指定した多重ループの外側のループに作用させることも可能。 for (i = 0; i < 10; i++) { if (i == 5) { continue; } System.out.println(i); } goto gotoは予約語だが機能は無い。

カテゴリー: Java | タグ: , , , , , , , | コメントする

文法

コメント(//, /* */, /** */)
// から行末まで、/* ~ */ の間は コメント(注釈)
/** ~ */ もコメントで、javadoc コマンドで抜き出してドキュメント化することができる。

リテラル
数値や文字列などの値を リテラル と呼ぶ。

char – 文字コード
char には UNICODE(UTF-16)文字を代入。C/C++言語の char は 1バイトだが、Java の char は 2バイト分の領域を持つ。

byte, short, int, long – 整数値
long 型変数に数値を代入する場合、数値の最後に L をつける。C/C++ 言語と異なり、unsigned(符号なし)は無い。

float(4バイト), double(8バイト) – 実数値
float に数値を代入する際には、数値の最後に F を付ける。と言うことは、通常doubleで扱われる。

値を返さない型(void – 空)
add() というメソッドは int の値を返し、test() というメソッドは値を返さないなら、
int add(int x, int y) {
return x + y;
}
void test() {
System.out.println(“TEST”);
}

ビット演算子
>>> 論理右シフト。 a = b >>> 2;

文字列の比較
比較演算子 == を使って文字列の比較は出来ない。equals()を使う
String s1 = “ABC”;
String s2 = “DEF”;
if (s1.equals(s2)) {
System.out.println(“Match!”);
}

キャスト
型やクラスを一時的に変換して参照することを キャスト と呼ぶ。

カテゴリー: Java | タグ: , , , , , , , | コメントする

Excelの印刷タイトル行の設定

表の印刷時、表のタイトル行を全てのページに入れる。

1. {シートのオプション} でページ設定メニューをポップアップし
2. シートタブの印刷タイトル欄のタイトル行(または列)の右端のマウスカーソル指定アイコンをクリック
3. シート上でタイトルに設定したい範囲をマウスをドラッグして選択し、[OK]

タイトル行に設定範囲が自動記入される

タイトル行に設定範囲が自動記入される

カテゴリー: MS Office | コメントする