posts - 39,  comments - 263,  trackbacks - 0

          Java (J2SE 5.0) and C# Comparison
          This is a quick reference guide to highlight some key syntactical differences between Java and C#.
          This is by no means a complete overview of either language. Hope you find this useful!
          Also see VB.NET and C# Comparison.





          Java

          C#

          Comments
          // Single line
          /* Multiple
              line  */

          /** Javadoc documentation comments */
          // Single line
          /* Multiple
              line  */

          /// XML comments on a single line
          /** XML comments on multiple lines */
          Data Types

          Primitive Types
          boolean
          byte
          char
          short, int, long
          float, double


          Reference Types

          Object   (superclass of all other classes)
          String
          arrays, classes, interfaces

          Conversions

          // int to String
          int x = 123;
          String y = Integer.toString(x);  // y is "123"

          // String to int
          y = "456"; 
          x = Integer.parseInt(y);   // x is 456

          // double to int
          double z = 3.5;
          x = (int) z;   // x is 3  (truncates decimal)

          Value Types
          bool
          byte, sbyte
          char
          short, ushort, int, uint, long, ulong
          float, double, decimal
          structures, enumerations

          Reference Types
          object    (superclass of all other classes)
          string
          arrays, classes, interfaces, delegates

          Convertions

          // int to string
          int x = 123;
          String y = x.ToString();  // y is "123"

          // string to int
          y = "456";
          x = int.Parse(y);   // or x = Convert.ToInt32(y);

          // double to int
          double z = 3.5;
          x = (int) z;   // x is 3  (truncates decimal)

          Constants
          // May be initialized in a constructor
          final double PI = 3.14;
          const double PI = 3.14;

          // Can be set to a const or a variable. May be initialized in a constructor.
          readonly int MAX_HEIGHT = 9;

          Enumerations

          enum Action {Start, Stop, Rewind, Forward};

          // Special type of class
          enum Status {
            Flunk(50), Pass(70), Excel(90);
            private final int value;
            Status(int value) { this.value = value; }
            public int value() { return value; }
          };

          Action a = Action.Stop;
          if (a != Action.Start)
            System.out.println(a);               // Prints "Stop"

          Status s = Status.Pass;
          System.out.println(s.value());      // Prints "70"

          enum Action {Start, Stop, Rewind, Forward};

          enum Status {Flunk = 50, Pass = 70, Excel = 90};

          No equivalent.





          Action a = Action.Stop;
          if (a != Action.Start)
            Console.WriteLine(a);             // Prints "Stop"

          Status s = Status.Pass;
          Console.WriteLine((int) s);       // Prints "70"

          Operators

          Comparison
          ==  <  >  <=  >=  !=

          Arithmetic
          +  -  *  /
          (mod)
          /   (integer division if both operands are ints)
          Math.Pow(x, y)

          Assignment
          =  +=  -=  *=  /=   %=   &=  |=  ^=  <<=  >>=  >>>=  ++  --

          Bitwise
          &  |  ^   ~  <<  >>  >>>

          Logical
          &&  ||  &  |   !

          Note: && and || perform short-circuit logical evaluations

          String Concatenation
          +

          Comparison
          ==  <  >  <=  >=  !=

          Arithmetic
          +  -  *  /
          (mod)
          /   (integer division if both operands are ints)
          Math.Pow(x, y)

          Assignment
          =  +=  -=  *=  /=   %=  &=  |=  ^=  <<=  >>=  ++  --

          Bitwise
          &  |  ^   ~  <<  >>

          Logical
          &&  ||   !

          Note: && and || perform short-circuit logical evaluations, no & and | equivalents

          String Concatenation
          +

          Choices

          greeting = age < 20 ? "What's up?" : "Hello";

          if (x < y)
            System.out.println("greater");

          if (x != 100) {   
            x *= 5;
            y *= 2;
          }
          else
            z *= 6;

          int selection = 2;
          switch (selection) {     // Must be byte, short, int, char, or enum
            case 1: x++;            // Falls through to next case if no break
            case 2: y++;   break;
            case 3: z++;   break;
            default: other++;
          }

          greeting = age < 20 ? "What's up?" : "Hello";

          if (x < y) 
            Console.WriteLine("greater");

          if (x != 100) {   
            x *= 5;
            y *= 2;
          }
          else
            z *= 6;

          string color = "red";
          switch (color) {                          // Can be any predefined type
            case "red":    r++;    break;       // break is mandatory; no fall-through
            case "blue":   b++;   break;
            case "green": g++;   break;
            default: other++;     break;       // break necessary on default
          }

          Loops

          while (i < 10)
            i++;

          for (i = 2; i <= 10; i += 2) 
            System.out.println(i);

          do
            i++;
          while (i < 10);

          for (int i : numArray)  // foreach construct 
            sum += i;

          // for loop can be used to iterate through any Collection
          import java.util.ArrayList;
          ArrayList<Object> list = new ArrayList<Object>();
          list.add(10);    // boxing converts to instance of Integer
          list.add("Bisons");
          list.add(2.3);    // boxing converts to instance of Double

          for (Object o : list)
            System.out.println(o);

          while (i < 10)
            i++;

          for (i = 2; i <= 10; i += 2)
            Console.WriteLine(i);

          do
            i++;
          while (i < 10);

          foreach (int i in numArray) 
            sum += i;

          // foreach can be used to iterate through any collection 
          using System.Collections;
          ArrayList list = new ArrayList();
          list.Add(10);
          list.Add("Bisons");
          list.Add(2.3);

          foreach (Object o in list)
            Console.WriteLine(o);

          Arrays

          int nums[] = {1, 2, 3};   or   int[] nums = {1, 2, 3};
          for (int i = 0; i < nums.length; i++)
            System.out.println(nums[i]);

          String names[] = new String[5];
          names[0] = "David";

          float twoD[][] = new float[rows][cols];
          twoD[2][0] = 4.5;

          int[][] jagged = new int[5][];
          jagged[0] = new int[5];
          jagged[1] = new int[2];
          jagged[2] = new int[3];
          jagged[0][4] = 5;

          int[] nums = {1, 2, 3};
          for (int i = 0; i < nums.Length; i++)
            Console.WriteLine(nums[i]);

          string[] names = new string[5];
          names[0] = "David";

          float[,] twoD = new float[rows, cols];
          twoD[2,0] = 4.5f;

          int[][] jagged = new int[3][] {
              new int[5], new int[2], new int[3] };
          jagged[0][4] = 5;

          Functions
          // Return single value
          int Add(int x, int y) {
             return x + y;
          }

          int sum = Add(2, 3);

          // Return no value
          void PrintSum(int x, int y) {
             System.out.println(x + y);
          }

          PrintSum(2, 3); 

          // Primitive types and references are always passed by value
          void TestFunc(int x, Point p) {
             x++;
             p.x++;       // Modifying property of the object
             p = null;    // Remove local reference to object
          }

          class Point {
             public int x, y;
          }

          Point p = new Point();
          p.x = 2;
          int a = 1;
          TestFunc(a, p);
          System.out.println(a + " " + p.x + " " + (p == null) );  // 1 3 false




          // Accept variable number of arguments
          int Sum(int ... nums) {
            int sum = 0;
            for (int i : nums)
              sum += i;
            return sum;
          }

          int total = Sum(4, 3, 2, 1);   // returns 10

          // Return single value
          int Add(int x, int y) {
             return x + y;
          }

          int sum = Add(2, 3);

          // Return no value
          void PrintSum(int x, int y) {
             Console.WriteLine(x + y);
          }

          PrintSum(2, 3); 

          // Pass by value (default), in/out-reference (ref), and out-reference (out)
          void TestFunc(int x, ref int y, out int z, Point p1, ref Point p2) {
             x++;  y++;  z = 5;
             p1.x++;       // Modifying property of the object     
             p1 = null;    // Remove local reference to object
             p2 = null;   // Free the object
          }

          class Point {
             public int x, y;
          }

          Point p1 = new Point();
          Point p2 = new Point();
          p1.x = 2;
          int a = 1, b = 1, c;   // Output param doesn't need initializing
          TestFunc(a, ref b, out c, p1, ref p2);
          Console.WriteLine("{0} {1} {2} {3} {4}",
             a, b, c, p1.x, p2 == null);   // 1 2 5 3 True

          // Accept variable number of arguments
          int Sum(params int[] nums) {
            int sum = 0;
            foreach (int i in nums)
              sum += i;
            return sum;
          }

          int total = Sum(4, 3, 2, 1);   // returns 10

          Strings

          // String concatenation
          String school = "Harding ";
          school = school + "University";   // school is "Harding University"

          // String comparison
          String mascot = "Bisons";
          if (mascot == "Bisons")    // Not the correct way to do string comparisons
          if (mascot.equals("Bisons"))   // true
          if (mascot.equalsIgnoreCase("BISONS"))   // true
          if (mascot.compareTo("Bisons") == 0)   // true

          System.out.println(mascot.substring(2, 5));   // Prints "son"

          // My birthday: Oct 12, 1973
          java.util.Calendar c = new java.util.GregorianCalendar(1973, 10, 12);
          String s = String.format("My birthday: %1$tb %1$te, %1$tY", c);

          // Mutable string
          StringBuffer buffer = new StringBuffer("two ");
          buffer.append("three ");
          buffer.insert(0, "one ");
          buffer.replace(4, 7, "TWO");
          System.out.println(buffer);     // Prints "one TWO three"

          // String concatenation
          string school = "Harding ";
          school = school + "University";   // school is "Harding University"

          // String comparison
          string mascot = "Bisons";
          if (mascot == "Bisons")    // true
          if (mascot.Equals("Bisons"))   // true
          if (mascot.ToUpper().Equals("BISONS"))   // true
          if (mascot.CompareTo("Bisons") == 0)    // true

          Console.WriteLine(mascot.Substring(2, 3));    // Prints "son"

          // My birthday: Oct 12, 1973
          DateTime dt = new DateTime(1973, 10, 12);
          string s = "My birthday: " + dt.ToString("MMM dd, yyyy");

          // Mutable string
          System.Text.StringBuilder buffer = new System.Text.StringBuilder("two ");
          buffer.Append("three ");
          buffer.Insert(0, "one ");
          buffer.Replace("two", "TWO");
          Console.WriteLine(buffer);     // Prints "one TWO three"

          Exception Handling

          // Must be in a method that is declared to throw this exception
          Exception ex = new Exception("Something is really wrong.");
          throw ex;  

          try {
            y = 0;
            x = 10 / y;
          } catch (Exception ex) {
            System.out.println(ex.getMessage()); 
          } finally {
            // Code that always gets executed
          }

          Exception up = new Exception("Something is really wrong.");
          throw up;  // ha ha


          try
          {
            y = 0;
            x = 10 / y;
          } catch (Exception ex) {      // Variable "ex" is optional
            Console.WriteLine(ex.Message);
          } finally {
            // Code that always gets executed
          }

          Namespaces

          package harding.compsci.graphics;












          import
          harding.compsci.graphics.Rectangle;  // Import single class

          import harding.compsci.graphics.*;   // Import all classes

          namespace Harding.Compsci.Graphics {
            ...
          }

          or

          namespace Harding {
            namespace Compsci {
              namespace Graphics {
                ...
              }
            }
          }

          // Import all class. Can't import single class.
          using Harding.Compsci.Graphics;

          Classes / Interfaces

          Accessibility keywords
          public
          private
          protected
          static



          // Inheritance
          class FootballGame extends Competition {
            ...
          }

          // Interface definition
          interface IAlarmClock {
            ...
          }

          // Extending an interface 
          interface IAlarmClock extends IClock {
            ...
          }

          // Interface implementation
          class WristWatch implements IAlarmClock, ITimer {
             ...
          }

          Accessibility keywords
          public
          private
          internal
          protected
          protected internal
          static

          // Inheritance
          class FootballGame : Competition {
            ...
          }

          // Interface definition
          interface IAlarmClock {
            ...
          }

          // Extending an interface 
          interface IAlarmClock : IClock {
            ...
          }

          // Interface implementation
          class WristWatch : IAlarmClock, ITimer {
             ...
          }

          Constructors / Destructors

          class SuperHero {
            private int mPowerLevel;

            public SuperHero() {
              mPowerLevel = 0;
            }

            public SuperHero(int powerLevel) {
              this.mPowerLevel= powerLevel;
            }

            // No destructors, just override the finalize method
            protected void finalize() throws Throwable { 
              super.finalize();   // Always call parent's finalizer  
            }
          }

          class SuperHero {
            private int mPowerLevel;

            public SuperHero() {
               mPowerLevel = 0;
            }

            public SuperHero(int powerLevel) {
              this.mPowerLevel= powerLevel; 
            }

            ~SuperHero() {
              // Destructor code to free unmanaged resources.
              // Implicitly creates a Finalize method.

            }
          }

          Objects

          SuperHero hero = new SuperHero();

          hero.setName("SpamMan");
          hero.setPowerLevel(3);

          hero.Defend("Laura Jones");
          SuperHero.Rest();  // Calling static method

          SuperHero hero2 = hero;   // Both refer to same object
          hero2.setName("WormWoman");
          System.out.println(hero.getName());  // Prints WormWoman

          hero = null;   // Free the object

          if (hero == null)
            hero = new SuperHero();

          Object obj = new SuperHero();
          System.out.println("object's type: " + obj.getClass().toString());
          if (obj instanceof SuperHero)
            System.out.println("Is a SuperHero object.");

          SuperHero hero = new SuperHero();

          hero.Name = "SpamMan";
          hero.PowerLevel = 3;

          hero.Defend("Laura Jones");
          SuperHero.Rest();   // Calling static method

          SuperHero hero2 = hero;   // Both refer to same object
          hero2.Name = "WormWoman";
          Console.WriteLine(hero.Name);   // Prints WormWoman

          hero = null ;   // Free the object

          if (hero == null)
            hero = new SuperHero();

          Object obj = new SuperHero(); 
          Console.WriteLine("object's type: " + obj.GetType().ToString());
          if (obj is SuperHero)
            Console.WriteLine("Is a SuperHero object.");

          Properties

          private int mSize;

          public int getSize() { return mSize; }
          public void setSize(int value) {
            if (value < 0)
              mSize = 0;
            else
              mSize = value;
          }


          int s = shoe.getSize();
          shoe.setSize(s+1);

          private int mSize;

          public int Size {
            get { return mSize; }
            set {
              if (value < 0)
                mSize = 0;
              else
                mSize = value;
            }
          }

          shoe.Size++;

          Structs


           

          No structs in Java.

          struct StudentRecord {
            public string name;
            public float gpa;

            public StudentRecord(string name, float gpa) {
              this.name = name;
              this.gpa = gpa;
            }
          }

          StudentRecord stu = new StudentRecord("Bob", 3.5f);
          StudentRecord stu2 = stu;  

          stu2.name = "Sue";
          Console.WriteLine(stu.name);    // Prints "Bob"
          Console.WriteLine(stu2.name);   // Prints "Sue"
          Console I/O
          java.io.DataInput in = new java.io.DataInputStream(System.in);
          System.out.print("What is your name? ");
          String name = in.readLine();
          System.out.print("How old are you? ");
          int age = Integer.parseInt(in.readLine());
          System.out.println(name + " is " + age + " years old.");


          int c = System.in.read();   // Read single char
          System.out.println(c);      // Prints 65 if user enters "A"

          // The studio costs $499.00 for 3 months.
          System.out.printf("The %s costs $%.2f for %d months.%n", "studio", 499.0, 3);

          // Today is 06/25/04
          System.out.printf("Today is %tD%n", new java.util.Date());

          Console.Write("What's your name? ");
          string name = Console.ReadLine();
          Console.Write("How old are you? ");
          int age = Convert.ToInt32(Console.ReadLine());
          Console.WriteLine("{0} is {1} years old.", name, age);
          // or
          Console.WriteLine(name + " is " + age + " years old.");

          int c = Console.Read();  // Read single char
          Console.WriteLine(c);    // Prints 65 if user enters "A"

          // The studio costs $499.00 for 3 months.
          Console.WriteLine("The {0} costs {1:C} for {2} months.\n", "studio", 499.0, 3);

          // Today is 06/25/2004
          Console.WriteLine("Today is " + DateTime.Now.ToShortDateString());

          File I/O

          import java.io.*;

          // Character stream writing
          FileWriter writer = new FileWriter("c:\\myfile.txt");
          writer.write("Out to file.");
          writer.close();

          // Character stream reading
          FileReader reader = new FileReader("c:\\myfile.txt");
          BufferedReader br = new BufferedReader(reader);
          String line = br.readLine();
          while (line != null) {
            System.out.println(line);
            line = br.readLine();
          }
          reader.close();

          // Binary stream writing
          FileOutputStream out = new FileOutputStream("c:\\myfile.dat");
          out.write("Text data".getBytes());
          out.write(123);
          out.close();

          // Binary stream reading
          FileInputStream in = new FileInputStream("c:\\myfile.dat");
          byte buff[] = new byte[9];
          in.read(buff, 0, 9);   // Read first 9 bytes into buff
          String s = new String(buff);
          int num = in.read();   // Next is 123
          in.close();

          using System.IO;

          // Character stream writing
          StreamWriter writer = File.CreateText("c:\\myfile.txt");
          writer.WriteLine("Out to file.");
          writer.Close();

          // Character stream reading
          StreamReader reader = File.OpenText("c:\\myfile.txt");
          string line = reader.ReadLine();
          while (line != null) {
            Console.WriteLine(line);
            line = reader.ReadLine();
          }
          reader.Close();


          // Binary stream writing

          BinaryWriter out = new BinaryWriter(File.OpenWrite("c:\\myfile.dat"));
          out.Write("Text data");
          out.Write(123);
          out.Close();

          // Binary stream reading
          BinaryReader in = new BinaryReader(File.OpenRead("c:\\myfile.dat"));
          string s = in.ReadString();
          int num = in.ReadInt32();
          in.Close();

          posted on 2005-11-15 00:14 nake 閱讀(416) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2005年11月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          常用鏈接

          留言簿(18)

          我參與的團隊

          隨筆檔案(39)

          收藏夾(1)

          搜索

          •  

          積分與排名

          • 積分 - 451355
          • 排名 - 119

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 上饶县| 西盟| 克山县| 昆明市| 松桃| 绥宁县| 大荔县| 涿鹿县| 汨罗市| 浙江省| 衡阳县| 全州县| 霞浦县| 杭锦旗| 安仁县| 乐安县| 三都| 德清县| 房山区| 于都县| 安新县| 柘城县| 贡嘎县| 阳西县| 从江县| 昌图县| 凤阳县| 民丰县| 鄂尔多斯市| 永州市| 昌吉市| 门头沟区| 鄂托克前旗| 南汇区| 平度市| 临高县| 江北区| 双牌县| 双城市| 通辽市| 柞水县|