プログラム言語 データ型
変数(データ型)宣言
const name: string = “TypeScript”;
var i = 5;
i=”5″ →エラー
型推論を利用した変数宣言では同時にに初期化が必要で、初期化時の型以外の型を格納できない。
型推論を利用したクラスのインスタンス化は「オブジェクト指向: クラス/インスタンス化」参照
int i = 5;
string i = ‘5’;
object i = 5;
private int i = 5;
public string i = ‘5’;
protected object i = 5;
Dim i As String = ‘5’
Dim i As object = 5
Private i As Integer = 5
Public i As String = ‘5’
Protected i As object = 5
int i = 100;
var i = 5;
//宣言なしでの使用も可(非推奨)
i = “5”;
// 関数も格納できる。
i = function(){ ~ };
// 関数の実行。
i;
型定義無し(型推論=初期値に応じて自動的に定義される)
$i = “5”;
$i = 5;
変数の初期化
unset($i);
print $i;
→(何も表示されない)
my $y = “bbb”;
my @z = (c,c,c);
//宣言なしでの使用も可(非推奨)
$yy = “bbb”;
型定義無し(型推論=初期値に応じて自動的に定義される)
i=”5″;
i=5;
=の前後に を入れない
読取専用
readonly i=~;
変数削除
unset i
変数の参照
echo $i
echo {$i}
標準出力結果を代入
$i=`~`
「`」はSHIFT+@
例 $i=`ls`
データ型一覧
種類 | 例 | 格納先 |
---|---|---|
・基本型(値型、プリミティブ型) |
・論理型(boolean) ・文字型(char) ・整数型(short、int、long) ・小数点型(float、double) ・空型(void) ・構造体 ・列挙体 |
スタック領域 |
参照型(オブジェクト型) |
・文字列型(String ※言語による) ・配列 ・クラス ・インターフェイス ・デリゲート |
ヒープ領域 |
String name1 = “Hello”;
String name2 = new String(“Hello”);
※文字列の値が等しいか?
boolean blnRet = name1.equals(name2);
⇒ blnRet : true
※参照値が等しいか?
boolean blnRet = (name1 == name2);
⇒ blnRet : false
「文字列型の参照/値型と参照型」参照
データ型 | コード | 備考 |
---|---|---|
論理値(論理型) | boolean | |
整数(整数型) | integer | |
浮動小数点数(浮動小数点型) | float(double) | |
文字列 | string | |
配列 | array | |
ヌル値 | NULL | |
オブジェクト | object | |
リソース | resource |
データ型 | コード | 備考 |
---|---|---|
論理値(論理型) | boolean | |
整数(整数型)、浮動小数点数(浮動小数点型) | number | 他言語では一般的にInteger、float等 |
文字列 | string | |
配列 | 「プログラム言語 配列」参照 | |
Any | 全ての型OK |
var all: any = 1; all = ‘aaa’; all = true; |
void | 型なし | |
未定義 | Undefined | 型定義なし、初期値なしの場合に自動的に設定される |
参照値なし | null | 明確に値を持たない事を示す為に利用 |
オブジェクト | object |
let u = undefined;
let u: undefined = undefined;
console.log({u}) → undefined
u = 5;
console.log({u}) → 5
console.log(‘typeof u’, typeof u); → number
let x;
console.log({x}) → undefined
console.log(‘typeof x’, typeof x); → undefined
let n = null;
console.log({n}) → undefined
console.log(‘typeof n’, typeof n); → null
n = 5;
console.log({n}) → 5
console.log(‘typeof n’, typeof n); → number
// エラー?
let n: null = null;
console.log({n})
console.log(‘typeof n’, typeof n);
データ型 | コード | 備考 |
---|---|---|
論理値(論理型) | boolean | |
ヌル値 | NULL | |
未定義 | Undefined | |
整数(整数型)、浮動小数点数(浮動小数点型) | Number | 他言語では一般的にInteger、float等 |
整数(整数型) | BigInt | |
文字列 | String | |
シンボル | Symbol | |
オブジェクト | object |
unsigned ~
signed short int -32,768 ~ 32,767
unsigned short int 0 ~ 65,535
short int -32,678 ~ 32,767
int -2,147,486,948 ~ 2,147,483,647
__int8 my_Int1 = -128;
__int8 my_Int2 = -129;
// my_Int2:127
unsigned __int8 my_Int3 = 255;
unsigned __int8 my_Int4 = 256;
// my_Int4:0
unsigned __int8 my_Int5 = -1;
// my_Int5:255
char myChar1 = ‘a’;
char myChar2 = ‘aa’;
// myChar2:’a’
signed char myChar3 = -128;
signed char myChar4 = -129;
// myChar4:127
signed char myChar5 = 127;
signed char myChar6 = 128;
// myChar6:-128
unsigned char myChar7 = 255;
unsigned char myChar8 = 256;
// myChar8:0
unsigned char myChar9 = -1;
// myChar9:255
wchar_t myWcharT1 = ‘aaa’;
wchar_t myWcharT2 = ‘西’;
wchar_t myWcharT3 = ‘西宮’;
bool myBool1 = true;
bool myBool2 = -1;
// myBool2:true
データ型別名
typedef unsigned long int newInt;
newInt n = i;
将来的にデータ型を変更する可能性がある場合、
別名型を使用しておくと、一カ所の変更で全ての別名型のデータ型を変更できる。
真/偽
真偽は以下で表現する。
false
‘0’ #文字列としての’0′
” #Null文字列
“” #Null文字列
未定義
my $str;
if($str){
print “未定義”,”\n”;
}elseif($str eq “aaa”){
~
}
true
my $str = 0;
if ($str){
print “定義済み”,”\n”;
}
文字型、文字列型
「プログラム言語 データ型:文字型・文字列型」参照
C#、JAVAにおける文字列型の挙動については、「文字列型の参照」参照
固定の値
定数/固定値
「プログラム言語 固定値/固定値」参照
ENUM(列挙体)(enum)
リテラル
「プログラム言語 固定値/リテラル」参照
Object型
JavaScript
var hoge = document.getElementById(‘hoge’);
hoge.~ = ~
jQuery
var hoge = $(“#hoge”).get(0);
var hoge = $(“#hoge”)[0];
hoge.~ = ~
構造体
構造体:値型
クラス:参照型
{
public int myInt;
public string myStr;
public MyStruct(int prmInt, string prmStr)
{
this.myInt = prmInt;
this.myStr = prmStr;
}
public int fnPlus() { return this.myInt * 2; }
public string fnPlus(string prm) { return this.myStr + prm; }
}
class Program
{
static void Main(string[] args)
{
int retInt;
string retStr;
MyStruct m1 = new MyStruct();
retInt = m1.fnPlus();
retInt:0
retStr = m1.fnPlus(prm: @”bbb”);
retStr:bbb
デフォルトコンストラクタが呼ばれると変数のデフォルト値で初期化される(int:0、string:null)
MyStruct m2 = new MyStruct(prmInt: 10, prmStr: @”aaa”);
retInt = m2.fnPlus();
retInt:20
retStr = m2.fnPlus(prm: @”bbb”);
retStr:aaabbb
MyStruct m3;
retInt = m3.myInt; コンパイルエラー
retStr = m3.myStr; コンパイルエラー
}
}
{
struct person
{
char *name;
int age;
};
person p;
p.age = 36;
Console::WriteLine(p.age);
return 0;
}
※構造体定義に続いて変数定義
int main(array<System::String ^> ^args)
{
struct person
{
char *name;
int age;
} p;
p.age = 36;
Console::WriteLine(p.age);
return 0;
}
A As Integer
B As String
End Type
Dim myType() As tpType
ReDim myType(5)
Dim i As Integer
For i = 0 To UBound(myType) ※i=0To5
myType(i).A = i
myType(i).B = “B”
Next i
部分型
クラス、構造体について記述を分割できる。
別ファイルへの記述も可。
大規模開発時等に利用される。
{
private int _member1 { get; set;}
}
public partial class MyClass
{
private int _member2 { get; set; }
}
public partial class MyClass
{
public MyClass(int mem1, int mem2)
{
this._member1 = mem1;
this._member2 = mem2;
}
public int retPlus()
{
return this._member1 + this._member2;
}
}
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
MyClass myClass = new MyClass(mem1:5, mem2:10);
int ret = myClass.retPlus();
ret:15
}
}
型判定
print(‘abc’.isalpha()) #true
print(‘abcABC’.isalpha()) #true
print(‘abc123’.isalpha()) #false
print(‘abc abc’.isalpha()) #false
#数字判定
print(‘123’.isnumeric()) #true
print(‘123’.isnumeric()) #true
print(‘Ⅳ’.isnumeric()) #true isdecimal()だとfalse
print(‘四’.isnumeric()) #true isdigit()、isdecimal()だとfalse
print(‘123 ‘.isnumeric()) #false
print(‘123abc’.isnumeric()) #false
#英数字判定
print(‘123abc’.isalnum()) #true
print(‘123ABC’.isalnum()) #true
print(‘Ⅳ’.isalnum()) #true
print(‘四’.isalnum()) #true
print(‘123 ‘.isalnum()) #false