プログラム言語 データ型

変数(データ型)宣言

型推論(object型ではない)
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 Integer = 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,j,k;
int i = 100;

//variant型
var i = 5;

//宣言なしでの使用も可(非推奨)
i = “5”;

// 関数も格納できる。
i = function(){ ~ };
// 関数の実行。
i;

宣言無しで使用可
型定義無し(型推論=初期値に応じて自動的に定義される)
$i = “5”;
$i = 5;

変数の初期化
unset($i);
print $i;
→(何も表示されない)

my $X;
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
文字列型の参照/値型と参照型」参照

signed ~ 符号(+-)有。デフォルト:有
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

データ型 コード 備考
論理値(論理型) boolean
整数(整数型) integer
浮動小数点数(浮動小数点型) float(double)
文字列 string
配列 array
ヌル値 NULL
オブジェクト object
リソース resource
データ型 コード 備考
論理値(論理型) boolean
ヌル値 NULL
未定義 Undefined
整数(整数型)、浮動小数点数(浮動小数点型) Number 他言語では一般的にInteger、float等
整数(整数型) BigInt
文字列 String
シンボル Symbol
オブジェクト object

データ型別名

unsigned long int i = 1000000000;

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)

プログラム言語 固定値/ENUM(列挙体)」参照

リテラル

プログラム言語 固定値/リテラル」参照

Object型

<div id=”hoge”>~</div>

JavaScript
var hoge = document.getElementById(‘hoge’);
hoge.~ = ~

jQuery
var hoge = $(“#hoge”).get(0);
var hoge = $(“#hoge”)[0];
hoge.~ = ~

全ての型(class)はObjectクラスを継承している為、
Objectクラスのメソッドは全クラスで使用可能。
オブジェクト指向: ポリモーフィズム/型情報」参照

構造体

構造体:値型
クラス:参照型

struct MyStruct
{
 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; コンパイルエラー

 }
}

int main(array<System::String ^> ^args)
{
  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;
}

Private Type tpType
 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

部分型

クラス、構造体について記述を分割できる。
別ファイルへの記述も可。
大規模開発時等に利用される。

public partial class MyClass
{
 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

NULL判定

プログラム言語 標準関数(テキスト系)/Null判定参照