1. 程式人生 > >C#與java的異同

C#與java的異同

using System;
using System.Collections;

namespace VirtualDemo
{
    
publicabstractclass Expression
    {
        
publicabstractdouble Evaluate(Hashtable vars);
        
    }
    
publicclass Constant : Expression
    {
        
double value;
        
public Constant(double value)
        {
            
this
.value = value;
        }
        
publicoverridedouble Evaluate(Hashtable vars)
        {
            
return value;
        }
    }
    
publicclass VariableReference : Expression
    {
        
string name;
        
public VariableReference(string name)
        {
            
this.name = name;
        }
        
publicoverridedouble Evaluate(Hashtable vars)
        {
            
object value = vars[name];
            
if (value ==null)
            {
                
thrownew Exception("Unknown variable: "+ name);
            }
            
return Convert.ToDouble(value);
        }
    }
    
publicclass Operation : Expression
    {
        Expression left;
        
char op;
        Expression right;
        
public Operation(Expression left, char op, Expression right)
        {
            
this.left = left;
            
this.op = op;
            
this.right = right;
        }
        
publicoverridedouble Evaluate(Hashtable vars)
        {
            
double x = left.Evaluate(vars);
            
double y = right.Evaluate(vars);
            
switch (op)
            {
                
case'+'return x + y;
                
case'-'return x - y;
                
case'*'return x * y;
                
case'/'return x / y;
            }
            
thrownew Exception("Unknown operator");
        }
    }
    
publicclass Test
    {
        
publicstaticvoid Main(string []args)
        {
            Expression e 
=new Operation(
            
new VariableReference("x"),
            
'*',
            
new Operation(
                
new VariableReference("y"),
                
'+',
                
new Constant(2)
            )
        );
        Hashtable vars 
=new Hashtable();
        vars[
"x"=3;
        vars[
"y"=5;
        Console.WriteLine(e.Evaluate(vars));        
// Outputs "21"        vars["x"=1.5;
        vars[
"y"=9;
        Console.WriteLine(e.Evaluate(vars));        
// Outputs "16.5"
        }
    }

}

相關推薦

C#Java異同

相同點:編譯為機器獨立、語言獨立的程式碼,執行在託管執行環境中                 採用垃圾收集機制,同時摒棄了指標;                 具有強有力的反射能力;                 沒有標頭檔案,所有程式碼都在包裝程式集裡;      

C#java異同

using System;using System.Collections;namespace VirtualDemo {     publicabstractclass Expression     {         publicabstractdouble Evaluate(Hashtable var

C++JavaC#的異同(一):值,地址,引用

Java,C#已經比較熟悉,最近在從0開始自學C++。學習過程中必然會與Java,C#進行對比,有吐槽,也有點贊。 先來講講最基本也是最重要的部分:引數傳遞的方式。 對於型別, Java分基本型別、複合型別,從另外一個角度分是值型別,引用型別。在展開對比前, 我們先來看看三個關鍵方式: 值

c++java的一些不同點

編程語言 輸出結果 float 面向對象 完成 可能 lang style 重載    Java、C、C++在近兩年一直穩居世界編程語言排行榜前三名。Java與c++都是面向對象的語言,但Java晚於C++發布,部分語法和思想也參考了C++,只是Java 沒有頭文件、指針、

c#java中byte位元組的區別及轉換方法

在java中  byte的範圍在 [-128,127] 在C#中  byte的範圍在 [0,255] 所以 java程式與C#程式 進行資料傳輸的時候 要先把java的byte陣列轉換成在[0,255]範圍內的int型陣列a[];再把a[]進行加密得到字串str, 把字串

C++ Java 語言對比

1 . Java 是完全封裝的,而 C++ 的函式是可以定義在 Class 的外部的。從這裡就可以看出 C++ 的 OO 思想不夠徹底,至少在封裝這一點上。 2. C++ 中有拷貝

C#JAVA的區別

C#(C-Sharp)是Microsoft的新程式語言,被譽為“C/C++家族中第一種面向元件的語言”。然而,不管它自己宣稱的是什麼,許多人認為C#更像是Java的一種克隆,或者是Microsoft用來替代Java的產品。事實是否是這樣的呢?

androidPC,C#Java 利用protobuf 進行無障礙通訊【Socket】

轉自https://www.cnblogs.com/TerryBlog/archive/2011/04/23/2025654.html protobuf 是什麼?   Protocol buffers是一種編碼方法構造的一種有效而可擴充套件的格式的資料。 谷歌使用其內

c#java對比

#c#課時01 ##c#與java對比 ###建立: 檔案-新建-專案-VisualC#-控制檯應用程式。 ###結構: C#: using System; namespace HelloWorld { class Hello { static void Main()

c++java的優缺點!

大多數程式設計師都認為C/C++會比Java語言快,甚至於覺得從Java語言誕生以來,“執行速度緩慢”的帽子就應當被扣在頭頂,這種觀點的出現是由於Java剛出現的時候JIT編譯技術還不成熟,主要靠直譯器執行的Java語言確實性能比較低下。但是在今天JIT編譯技術已經發展成熟之後,Java語言

C#java互動匯入EXCEL

採用webservice與java互動: 大致思路:  通過C#來獲取檔案, 將檔案讀取為BYTE[] ,然後通過webservice 將其傳入java後代,然後去解析EXCEL; Excel 如下: C#端程式碼:

C#Java AES 加密解密

參考文件:https://www.cnblogs.com/xbzhu/p/7064642.html 前幾天對接Java介面,需要C#加密引數,Java解密。奈何網上找了一堆大同小異的加解密方法都跟Jaca加密的密文不一致,Java介面也無法解密,直到看見上面連結的第二種方法。能夠正常的解密Java加密的

C #java進行通訊?傳輸字串為例。

C#端程式碼: String contents =“hello 這是C#傳來的資料”;//請求string uri = "http://192.168.1.149:8080/專案名/TestServlte";HttpWebRequest request = HttpWebR

C++】總體認識,c++java簡單對比

      學習了C++的一些知識,因為Java是用C寫的,而C++是對C的封裝,所以有java基礎,學C++不難。       C++在形式上比java繁瑣,比如要有main方法,函式定義,成員變數賦值,靜態成員賦值等。       但是C++有指標型別,所以在操作

c# java base64 不一致解決方案

不一致的問題不是編碼的問題  而是json字串的問題通常我們會json 巢狀  我們先來看連個字串 {"contentType":"","httpMethod":"POST","paramMap":"{\"keyword\":\"華為\"}","url":"https:\/\/bizapi.jd.com\/a

確定進位制 【C++java

描述 6*9 = 42 對於十進位制來說是錯誤的,但是對於13進位制來說是正確的。即, 6(13) * 9(13) = 42(13), 而 42(13) = 4 * 131+ 2 * 130= 54(10)。 你的任務是寫一段程式讀入三個整數p、q和 r,然後確定一個進位制

Objective-CJava 方法呼叫比較

Objective-C:宣告方法:-(Return-type)method:(Parameter-type)parameter1{...};多個引數時:-(Return-type)methodPart1:(Parameter-type)parameter1 methodPart2:(Parameter-typ

C++JAVA的區別

    通常,我們聊到Java,第一印象“面向物件”,“沒有指標,編寫效率高,執行效率較低”。更深入、專業一點就談論 “java記憶體自動回收(GC垃圾回收機制),多執行緒程式設計”。**  java的三大特性是封裝、繼承和多型。** 總結如下: 1、&

c++java中關於訪問修飾符的區別

#include <iostream> #include <math.h> using namespace std; class A { protected:void fun(){cout<<"hello"<<endl;} }; int main(){A a;a

面向過程 面向物件的區別以及C++Java的區別

                         面向物件和麵向過程的區別     面向過程一種以事件為中心的程式設計思想,以功能(行為)為導向,按模組化的設計,就是分析出解決問題所需要的步驟,然