プãƒã‚°ãƒ©ãƒ 言語 データ型
目次
変数(データ型)宣言
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
「文å—列型ã®å‚ç…§/値型ã¨å‚ç…§åž‹ã€å‚ç…§
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 |
データ型別å
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ã«ãŠã‘ã‚‹æ–‡å—åˆ—åž‹ã®æŒ™å‹•ã«ã¤ã„ã¦ã¯ã€ã€Œæ–‡å—列型ã®å‚ç…§ã€å‚ç…§
固定ã®å€¤
定数/固定値
データ型ã¯è‡ªå‹•判別ã•れる。
オブジェクト型マクãƒå®šæ•°
#define DEF_NUM (5)
#define DEF_STR ("AAA")
関数型マクãƒå®šæ•°
#define DEF_FUNC(a) ( (DEF_NUM + a) )
Console::WriteLine(DEF_NUM);
→ 5
Console::WriteLine(DEF_STR);
→ AAA
Console::WriteLine(DEF_FUNC(10));
→ 15
ã€å›ºå®šå€¤ã€‘
const int CONST_MYINT = 5;
const string CONST_MYSTR = "AAA";
CONST_MYINT = 10;
// エラー
※関数ãƒã‚¤ãƒ³ã‚¿ã«ãŠã„ã¦ãƒ¡ãƒ¢ãƒªã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’変更ã•れãŸããªã„å ´åˆã®ä½¿ã„æ–¹
void myFunc(const int *prm){}
print CONST_TEISUU;
→定数
列挙体(enum)
{
  enum1,
  enum2,
  enum3
}
enum enmTest2
{
  enum1 = 1,
  enum2 = 2,
  enum3 = 3
}
enum enmTest3
{
  enum1 = "1",
  enum2 = "2",
  enum3 = "3"
}
public void myForm_Load(object sender, EventArgs e)
{
  SubRoutine(test1: enmTest1.enum1,
         test2: enmTest2.enum1,
         test3: enmTest3.enum3);
}
private void SubRoutine(enmTest1 test1,
             enmTest2 test2,
             enmTest3 test3)
{
 ~
}
  enum1
  enum2
  enum3
End Enum
Private Enum enmTest2
  enum1 = 1
  enum2 = 2
  enum3 = 3
End Enum
VBã§ã¯æ–‡å—列をè¨å®šã™ã‚‹äº‹ã¯ã§ããªã„
Private Enum enmTest3
  enum1 = "1"
  enum2 = "2"
  enum3 = "3"
End Enum
Private Sub myForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  Call SubRoutine(test1:=enmTest1.enum1, _
              test2:=enmTest2.enum1)
End Sub
Private Sub SubRoutine(ByVal test1 As enmTest1, _
                  ByVal test2 As enmTest2)
 ~
End Sub
{
  value1 = 0,
  value2 = 1,
  value3
};
int myInt = myEnum::value1;
※intåž‹å¤‰æ•°ã¸æ ¼ç´å¯èƒ½
Console::WriteLine(myInt);
// ⇒0
return 0;
public class MyEnum {
 public enum VALUE{
  VAL1,
  VAL2,
  VAL3
 }
}
import static myPackage.MyEnum.VALUE.*;
public class MyMain {
 public static void main(String[] args) {
  int intVal1 = VAL1.ordinal();
  自動的ã«ä½¿ç”¨ã§ãるメソッド(æ£ç¢ºã«ã¯MyEnumãŒè‡ªå‹•çš„ã«ç¶™æ‰¿ã™ã‚‹enumクラスã®ãƒ¡ã‚½ãƒƒãƒ‰)
  → 0
  String strVal1 = VAL1.name();
  自動的ã«ä½¿ç”¨ã§ãるメソッド(æ£ç¢ºã«ã¯MyEnumãŒè‡ªå‹•çš„ã«ç¶™æ‰¿ã™ã‚‹enumクラスã®ãƒ¡ã‚½ãƒƒãƒ‰)
  → VAL1
 }
}
ã€ç‹¬è‡ªãƒ¡ã‚½ãƒƒãƒ‰ã‚’定義】
package myPackage;
public class MyEnum {
 public enum custEnum{
  intVAL1(1, "name1"),
  intVAL2(2, "name2"),
  intVAL3(3, "name3"); â†!
  メソッドを作æˆã™ã‚‹å ´åˆã¯ã€Œ;ã€ã§çµ‚ã‚ã‚‹
  下部ã®ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã‚’呼ã³å‡ºã™
  
  private final int index;
  private final String name;
  セッターを作æˆã—ãªã„å ´åˆã¯ã€Œfinalã€
  
  内部ã‹ã‚‰ã®ã¿å‘¼ã³å‡ºã•れるコンストラクタ
  custEnum(int index, String name){
   this.index = index;
   this.name = name;
  }
  外部ã‹ã‚‰å‘¼ã³å‡ºã•れるメソッド
  public int getIndex() {
   return this.index;
  }
  外部ã‹ã‚‰å‘¼ã³å‡ºã•れるメソッド
  public String getMyName() {
   return this.name;
  }
 }
}
import static myPackage.MyEnum.custEnum.*;
public class MyMain {
 public static void main(String[] args) {
  int intVal = VAL1.getIndex();
  → 1
  intVal = VAL1.ordinal(); も○
  → 0
  
  String strVal = VAL1.getMyName();
  → name1
  strVal = VAL1.name(); も○
  → Val1
 }
}
  Stop: 0,
  Moving: 1,
  End: 2
};
var gState = enmState.Stop;
  'IDX1' => 0,
  'IDX2' => 1,
  'IDX3' => 2,
];
$ary = ['php', 'java', 'C#',];
echo $ary[INDEX['IDX1']];
→php
リテラル
ソースコードã«ç›´æŽ¥è¨˜è¿°ã•れãŸå¤‰æ•°ã€å®šæ•°ä»¥å¤–ã®å€¤ã€‚
ãƒªãƒ†ãƒ©ãƒ«é ˜åŸŸã¨ã„ã†å¤‰æ•°ç‰ã¨ã¯ç•°ãªã‚‹ãƒ¡ãƒ¢ãƒªé ˜åŸŸã«ä½œæˆã•れる。
(C#ã€JAVAã«ãŠã‘るリテラル値ã®å‚ç…§ã«ã¤ã„ã¦ã¯ã€ã€Œæ–‡å—列型ã®å‚ç…§ã€å‚ç…§)
æ–‡å—列リテラルを記述ã™ã‚‹å ´åˆã¯ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—処ç†ã®é˜²æ¢ã‚’考慮ã™ã‚‹å¿…è¦ãŒã‚る。
(「エスケープã€å‚ç…§)
//⇒ C:    est    est.txt
//⇒ C:[tab]est[tab]est.txt
タブ入力をæ„味ã™ã‚‹ç‰¹æ®Šæ–‡å—「\tã€ã¨è¦‹ãªã•れã¦ã„る。
Console.WriteLine(@"C:\test\test.txt");
//⇒ C:\test\test.txt
「@ã€ã‚’付ã‘ã‚‹ã¨ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—処ç†ã•れãªã„。
Console.WriteLine("C:\\test\\test.txt");
//⇒ C:\test\test.txt
「@ã€ã‚’付ã‘ãªã„å ´åˆã€‚
「\ã€ã®å‰ã«æ›´ã«ã€Œ\ã€ã‚’付ã‘る。
String myStr = "5"; //æ–‡å—列リテラル
int myInt = 5; //整数リテラル
double myDoublt = 5.0; //æµ®å‹•å°æ•°ç‚¹ãƒªãƒ†ãƒ©ãƒ«
Boolean myBool = true; //真å½ãƒªãƒ†ãƒ©ãƒ«
リテラルã«ãŠã‘ã‚‹åž‹ã®æ˜Žç¤º(接尾辞)
long myLong = 5L(ã¾ãŸã¯5.0l);
⇒ myLong : 5
float myFloat = 5F(ã¾ãŸã¯5f);
⇒ myFloat : 5.0
int myInt = 10F; ⇒エラー
整数リテラルã®ä»–基数表示
int myInt = 10; //10進数
int myInt = 010; //8進数
int myInt = 0x10; //16進数
int myInt = 0b10; //2進数
「_ã€(アンダースコア)
整数リテラルをèªã¿ã‚„ã™ãã™ã‚‹ç‚ºã®è¨˜å·
int a = 123_456_789;
使用ルール
・リテラルã®å…ˆé ã¨æœ«å°¾ã«ã¯è¨˜è¿°ã§ããªã„
・記å·ã®å‰å¾Œã«ã¯è¨˜è¿°ã§ããªã„
<?php
 echo "aaaaa<br />\n";
 echo "bbbbb<br />\n";
 ↓ リテラルã¸ã®php変数ã®åŸ‹ã‚è¾¼ã¿
 「プãƒã‚°ãƒ©ãƒ 言語 標準関数(テã‚スト系)/ãƒã‚¤ãƒ³ãƒ‰(埋ã‚è¾¼ã¿)ã€å‚ç…§
?>
htmlæ–‡å—ä¸ã¸php埋ã‚è¾¼ã¿
<p>
 aaaaa<br />
 bbbbb<br />
 ccc<?php echo $purpose; ?>ccc<br />
 <a href="test.php">ddd<a>
</p>
ヒアドã‚ュメント
\nç„¡ã—ã§æ”¹è¡Œã€ç‰¹æ®Šæ–‡å—ã®ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—ä¸è¦
<<< ãŒãƒ’アドã‚ュメントã®é–‹å§‹åˆå›³
<<< ã®æ¬¡ã«æ›¸ã„ãŸæ–‡å—ãŒå†åº¦å‡ºç¾ã™ã‚‹ã¾ã§å…¨ã¦å‡ºåŠ›ã•れる
<p>
 <?php
  $purpose = "ppp";
  
  echo <<< HERE
  aaaaa<br />
  bbbbb<br />
  ↓ リテラルã¸ã®php変数ã®åŸ‹ã‚è¾¼ã¿
  ccc{$purpose}ccc<br />
  <a href="test.php">ddd<a>
  HERE;
 ?>
</p>
çµæžœ
aaaaa
bbbbb
cccpppccc
ddd
Objectåž‹
JavaScript
var hoge = document.getElementById('hoge');
hoge.~ = ~
jQuery
var hoge = $("#hoge").get(0);
var hoge = $("#hoge")[0];
hoge.~ = ~
Objectクラスã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯å…¨ã‚¯ãƒ©ã‚¹ã§ä½¿ç”¨å¯èƒ½ã€‚
「オブジェクト指å‘: ãƒãƒªãƒ¢ãƒ¼ãƒ•ィズム/åž‹æƒ…å ±ã€å‚ç…§
æ§‹é€ ä½“
æ§‹é€ ä½“ï¼šå€¤åž‹
クラス:å‚ç…§åž‹
{
 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
NULL判定
プãƒã‚°ãƒ©ãƒ 言語 標準関数(テã‚スト系)/Null判定å‚ç…§