JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Languages on JVM » Groovy  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 有關Groovy的資料型別的疑問
Ponylin





發文: 38
積分: 0
於 2011-01-09 17:31 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
各位高手大家好,我其實剛學程式設計還不算很久,約半年,最近對python、javascript、groovy這種程式語言還蠻有興趣的。
於是自己有在玩玩看,可以請問,在程式語言的分類中,動態與靜態(static & dynamic)和強型別/弱型別(strong type & weak type)是怎麼區分的呢? 我有在網路上蒐尋過一些相關的文章,但還是不是很了解,希望高手、老師們可以給我一點方向,謝謝!

像是我剛才練習的一個簡單的例子
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
package com.pony.groovy.first
 
class Test {
  def int i ; //型別是int ?
  def String str; //型別是String ?
  def str2;
  
  public Test(int i, String str) {
    super();
    this.i = i;
    this.str = str;
  }
  
  //回傳int型別?
  def int getI() {
    return i;
  }
  
  //回傳Object型別?
  def getStr() {
    return str;
  }
  
  //預設有str2屬性的getter、setter ?
  
  //類似像J2SE的main方法
  static main(args) {
    def i
    for(i = 0; i < 10; i++) {
      print i + ' '
    }
    
    print '\n'
    
    int j = 0;
    while(j < 10) {
      print j +' '
      j++
    }
    
    print '\n'
    
    if(j instanceof Integer) {
      println 'j is-a Integer'
    }
    
    if(i instanceof Object) {
      println "i is-a Object";
    }
    
    if(i instanceof Integer) {
      println 'i is-a Integer';
    }
    
    def t = new Test(10, 'ABCD');
    if(t instanceof Object) {
      println 't is-a Object';
    }
    
    if(t instanceof Integer) {
      println 't is-a Integer';
    } else {
      println 't is not a Integer';
    }
    
    if(t instanceof Test) {
      println 't is-a Test';
      println ('t.i = ' + t.getI() + ' t.str = ' + t.getStr());
    }
    
    if(t.getI() instanceof Integer) {
      println 't.getI() is-a Integer';
    }
    
    if(t.getI() instanceof Object) {
      println 't.getI() is-a Object';
    }
    
    if(t.getStr() instanceof String) {
      println 't.getStr() is-a String';
    }
    
    if(t.getStr() instanceof Object) {
      println 't.getStr() is-a Object';
    }
    
    t.setStr2("This is str2's value... ");
    println t.getStr2();
    
    if(t.getStr2() instanceof Object) {
      println 't.getStr2() is-a Object';
    }
    
    if(t.getStr2() instanceof String) {
      println 't.getStr2() is-a String';
    }
    
    if(t.getStr2() instanceof Integer) {
      println 't.getStr2() is-a Integer';
    } else {
      println 'oh no... t.getStr2() is not a Integer...';
    }
    
  }
 
}


我有點好奇的是,像是javascript也是動態型別的語言,所以他的變數在宣告時,好像不能加上型別的宣告,只能使用關鍵字var,但是為什麼Groovy好像也是動態型別的語言,卻仍然可以宣告型別,也能接受不宣告型別呢?

其實我是想弄懂動態型別和弱型別之間有什麼差別?
非常感謝大家!


Ponylin edited on 2011-01-09 18:00
reply to postreply to post
喜歡自由/前衛爵士樂的Java新手
話題樹型展開
人氣 標題 作者 字數 發文時間
1123 有關Groovy的資料型別的疑問 Ponylin 2435 2011-01-09 17:31
754 Re:有關Groovy的資料型別的疑問 linuxhsu 1114 2011-01-15 09:18
775 Re:有關Groovy的資料型別的疑問 ycli6921 536 2011-01-15 18:32
835 Re:有關Groovy的資料型別的疑問 Ponylin 22 2011-01-21 15:18
» JWorld@TW »  Languages on JVM » Groovy

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8