最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C# 操作符之二 算數(shù)操作符

 更新時間:2011年02月19日 10:09:33   作者:  
算數(shù)操作符+,-,*,/,%,的用法和大多程序設(shè)計語言是相同的,%號的作用是整數(shù)除法中產(chǎn)生余數(shù),而整數(shù)法會直接去掉小數(shù)部分,而不是四舍五入。
賦值運算符也有和算數(shù)操作符所結(jié)合的用法之前附錄中有提及,用法是:比如要將x加上4,然后再賦值給x,就可以寫成x+=4.

復(fù)制代碼 代碼如下:

public class MathOps{
public static void main(String [] args){
Random rand=new Random(47);
int i,j,k;
j=rand.nextInf(100)+1;
System.out.println("j:"+j);
k=rand.nextInt(100)+1;
System.out.println("k:"+k);
i=j-k;
System.out.println("j-k:"+i);
i=k/j;
System.out.println("k/j:"+i);
i=k*j;
System.out.println("k*j:"+i);
j%=k;
System.out.println("i%=k:"+j);
float u,v,w;
v=rand.nextFloat();
System.out.println("v:"+v);
w=rand.nextFloat();
System.out.println("w:"+w);
u=v+w;
System.out.printlln("v+w:"+u);
u=v-w;
System.out.println("v-w:"+u);
u=v*w;
System.out,print("v*w"+u);
u=v/w;
System.out.print("v/w:"+u);
u+=v;
System.out.print("u+=v:"+u);
u-=v;
System.out.print("u-=v:"+u);
u*=v;
System.out.print("u*=v:"+u);
u/=v;
System.out.print("u/=v:"+u);
}
}

輸出:
j:59;
k:56;
j+k:115;
j-k:3;
k/j:0;
k*j:3304;
k%j:56;
j%=k:3;
v:0.5309454;
w:0.0534122
v+w:0.5843576
v-w:0.47753322
v*w:0.028358962
v/w:9.94025
u+=v:10.471473
u-=v:9.940527
u*=v:5.2778773
u/=v:9.940527
通過Random類的對象,程序可以生成許多不同類型的隨機數(shù)字。做法很簡單,只需要調(diào)用方法nextInt()和nextFloat()即可(或nextLong()或者nextDouble())。傳遞給nextInt()的參數(shù)設(shè)置了所產(chǎn)生的隨機數(shù)的上限,而其下線為0,但是這個下線并不是我們想要的,因為他會產(chǎn)生除0的可能性,所以做了+1的操作。
一元操作符中編譯器會自動判斷+,-號的作用
比如:x=a*-b;編譯器可以編譯其含義b前-號是負號但為了避免讀者混淆最佳的寫法是
x=a*(-b)
一元減號用于轉(zhuǎn)變數(shù)據(jù)的符號,而一元加號只是為了與一元減號相對應(yīng),但是它唯一的作用僅僅是將較小類型的操作數(shù)提升為int;
算術(shù)操作符

Operator

Use

Description

+

op1 + op2

返回op1和op2的和

-

op1 - op2

返回op1和op2的差

*

op1 * op2

返回op1和op2的積

/

op1 / op2

返回op1除以op2的商

%

op1 % op2

返回op1除以 op2的余數(shù)

自動遞增和遞減
Java中提供的打量快捷運算中遞增和遞減運算時兩種相當不錯又快捷的運算(通常被稱為"自動遞增"和"自動遞減"運算)。其中,遞減操作符是"--",意私事減少一個單位,遞增是"++"意思是增加一個單位
++a等價于a=a+1遞減亦同
遞增,遞減又分為"前綴式"和"后綴式"。
對于前綴式:++a,--a,會先執(zhí)行運算,再生成值。而對于后綴式a++,a--,會先生成值,在執(zhí)行運算。
復(fù)制代碼 代碼如下:

public class AutoInc{
public static void main(String [] args){
int i=1;
System.out.println("i:"+1);
System.out.println("++i:"+ ++i);
System.out.println("i++:"+ i++);
System.out.println("—i:"+ --i);
System.out.println("i--:" + i--);
}
}

輸出
i:1
++i:2
i++:2
--i:1
i--:1
從上面這個例子中可以看書前綴式和后綴式的區(qū)別
遞增操作符正是c++這個名字的一種解釋,"超越c一步"
關(guān)系操作符
關(guān)系操作符主要生成的的是一個boolean布爾結(jié)果,他們比較值之間的結(jié)果如果為真返回true,如果為假則返回false,關(guān)系操作符包括<,>,<=,>=,==,!=(不等于),等于和不等于適合于所有基本數(shù)據(jù)類型,而其他的操作符不適合對boolean值的操作,因為true和false兩個之間不存在大于或小于的關(guān)系
復(fù)制代碼 代碼如下:

public class Equivalence{
public static void main(String [] arg){
Integer n1=new Integer(47);
Integer n2=new Integer(47);
System.out.println(n1==n2);
System.out.println(n1!=n2);
}
}

輸出
false
true
結(jié)果可能會跟你想的不一樣,在這里盡管對象內(nèi)容相同,但是對象的引用是不同的,而==和!=比較的是對象的引用,而不是內(nèi)容。
如果相比較兩對象的實際內(nèi)容是否相同的話要怎么做?需要使用所有對象都適用的equals()方法。但這個方法不適用于基本類型,基本類型直接使用==,!=即可
復(fù)制代碼 代碼如下:

public class EqualMethod{
public static void main(String [] args){
Integer n1=new Integer(47);
Interger n2=new Integer(47);
System.out.println(n1.equals(n2));
}
}

輸出
true
但是如果引用的對象是自己創(chuàng)建的類,結(jié)果又會有不同
復(fù)制代碼 代碼如下:

class Value{
int i;
}
public class EqualsMethod2{
public static void main(String [] args){
Value v1=new Value();
Value v2=new Value();
v1.i=v2.i=100;
System.out.println(v1.equals(v2));
}
}

輸出
false
結(jié)果又是false,這是由于equals的默認其實是比較引用。所以除非在自己的新類中重寫equals方法、否則是不能達到我們預(yù)期的效果的。
關(guān)系操作符

Operator

Use

Description

>

op1 > op2

當op1 大于op2 時返回true

>=

op1 >= op2

當op1 大于或等于op2 時返回true

<

op1 < op2

當op1 小于op2 時返回true

<=

op1 <= op2

當op1 小于或等于op2 時返回true

==

op1 == op2

當op1 等于大于op2 時返回true

!=

op1 != op2

當op1 不等于op2 時返回true

邏輯操作符
邏輯操作符與(&&),或(||),非(!)能根據(jù)參數(shù)的關(guān)系返回布爾值
復(fù)制代碼 代碼如下:

public class Bool{
public static void main(String [] args){
Random rand=new Random(47);
int i=rand.nextInt(100);
int j=rand.nextInt(100);
System.out.println("i=" + i);
System.out.println("j=" + j);
System.out.println("i > j is" +( i>j));
System.out.println("i < j is" +( i<j));
System.out.println("i > =j is" +( i>=j));
System.out.println("i <=j is" +( i<=j));
System.out.println("i ==j is" +( i==j));
System.out.println("i !=j is" +( i!=j));
System.out.println("(i <10) && (j<10) is" +((i <10) && (j<10)));
System.out.println("(i <10) || (j<10) is" +((i <10) ||(j<10)));
}
}

輸出
i=58
j=55
i>j is true
i<j is false
i>= j is true
i<=j is false
i==j is false
i!=j is true
(i <10) && (j<10) is false
(i <10) ||(j<10) isfalse
與或非操作只能應(yīng)用于布爾值,如果在應(yīng)該是String值的地方使用了boolean的話,布爾值會自動轉(zhuǎn)換成適當?shù)男问健?
應(yīng)注意的是在程序上對浮點數(shù)的比較是非常嚴格的。
條件操作符

Operator

Use

Description

&&

op1 && op2

當op1和op2都是true時,返回true ;如果op1的值是false,則不運算右邊的操作數(shù)

||

op1 || op2

當op1和op2有一個是true時,返回true;如果op1的值是true,則不運算右邊的操作數(shù)

!

! op

當op是false時,返回true;當op是true時,返回false

&

op1 & op2

運算op1和op2;如果op1和op2都是布爾值,而且都等于true,那么返回true,否則返回false;如果op1和op2都是數(shù)字,那么執(zhí)行位與操作

|

op1 | op2

運算op1和op2;如果op1和op2都是布爾值,而且有一個等于true,那么返回true,否則返回false;如果op1和op2都是數(shù)字,那么執(zhí)行位或操作

^

op1 ^ op2

運算op1和op2;如果op1和op2不同,即如果有一個是true,另一個不是,那么返回true,否則返回false;如果op1和op2都是數(shù)字,那么執(zhí)行位異或操作

短路
當使用邏輯操作符的時候會遇到一種短路狀況。既一但能夠明確無誤地確定整個表達式的值,就不再計算表達式余下的部分了。因此,整個邏輯表達式靠后的部分有可能不再計算。下面的例子展示了短路現(xiàn)象
復(fù)制代碼 代碼如下:

public class ShortCircuit{
static Boolean test1(int val){
System.out.println(“test1(“+val+")");
System.out.println(“result:"+(val<1));
return val<1
}
static Boolean test2(int val){
System.out.println(“test1(“+val+")");
System.out.println(“result:"+(val<2));
return val<2
}
static Boolean test3(int val){
System.out.println(“test1(“+val+")");
System.out.println(“result:"+(val<3));
return val<3
}
public static void main(String [] args){
Boolean b=test1(0)&&test2(2)&&test3(2);
System.out.println(“expression is “ + b);
}
}

輸出
test1(0)
result:true
test(2)
result:false
expression is false
由于調(diào)用了3個方法你會很自然的覺得3個方法應(yīng)該都被運行,但實際上輸出并非這樣,因為在第二次測試產(chǎn)生一個false結(jié)果。由于這意味著整個表達式肯定為false,所以沒必要繼續(xù)計算剩余的表達式,那樣只是浪費?!岸搪贰耙淮握齺碓从诖?。實際上,邏輯上所有的邏輯表達式都有一部分不必計算,那將獲得性能的提升。
三元操作符
三元操作符也成為條件操作符,他顯得比較特別,因為有三個操作數(shù),但是他又確實屬于操作符的一種
其形式為
boolean-exp?value0 :value1
如果boolean-exp表達式結(jié)果為true,就計算value0,而且這個計算結(jié)果也就是操作符最終產(chǎn)生的值。如果boolean-exp表達式結(jié)果為false,就計算value1,同樣的,他的結(jié)果也將成為操作符最后的值。
當然它也可以被if-else代替,但是三元操作符與if-else是完全不同的,操作符會產(chǎn)生一個值。
復(fù)制代碼 代碼如下:

public class TernaryIfElse{
static int ternary(int i){
return i<10?i*100:i*10;
}
static int standardIfElse(int i){
if(i<10)
return i*100;
else
return i*10;
}
public static void main(String [] args){
System.out.println(ternary(9));
System.out.println(ternary(10));
System.out.println standardIfElse( (9));
System.out.println standardIfElse( (10));
}
}

輸出
900
100
900
100
相比之下三元運算符要緊湊很多,而if-else更易理解
字符串操作符+和+=
Java中+和+=操作符除了之前講到的作用外,在特殊的上下文環(huán)境中是可以用作字符連接的。所以他們又稱為字符串操作符,字符串操作符有一些很有趣的行為。如果表達式以一個字符串起頭,那么后續(xù)所有的操作數(shù)都必須是字符串型(編譯器會自動將雙引號中的字符序列傳化成字符串):
復(fù)制代碼 代碼如下:

public class StringOperators{
public static void main(String [] args){
int x=0,y=1,z=2;
String s="x,y,z";
System.out.println(s+x+y+z);
System.out.println(x+""+s);
s+="(summed) =";
System.out.println(s+(x+y+z));
System.out.println(“"+x);
}
}

輸出
x,y,z 012
0 x,y,z
x,y,z (summed) = 3
0
應(yīng)注意的是第一行輸出的是012而不是總和3,是因為編譯器將他們自動轉(zhuǎn)化成了字符串形式,最后部分用+=講一個字符串追加到了s上,并且用括號來控制了編譯器的轉(zhuǎn)換,使他們可以順利求和。

相關(guān)文章

  • C#基本語法簡介

    C#基本語法簡介

    本文詳細講解了C#的基本語法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-04-04
  • C#集合Collections購物車Shopping Cart(實例講解)

    C#集合Collections購物車Shopping Cart(實例講解)

    下面小編就為大家分享一篇C#集合Collections購物車Shopping Cart的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • 基于C#實現(xiàn)SM2加簽驗簽工具

    基于C#實現(xiàn)SM2加簽驗簽工具

    這篇文章主要為大家詳細介紹了如何基于C#實現(xiàn)一個SM2加簽驗簽工具,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-10-10
  • C#四舍五入MidpointRounding.AwayFromZero解析

    C#四舍五入MidpointRounding.AwayFromZero解析

    這篇文章主要介紹了C#四舍五入MidpointRounding.AwayFromZero,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • C#實現(xiàn)AddRange為數(shù)組添加多個元素的方法

    C#實現(xiàn)AddRange為數(shù)組添加多個元素的方法

    這篇文章主要介紹了C#實現(xiàn)AddRange為數(shù)組添加多個元素的方法,實例分析了AddRange方法的使用技巧,需要的朋友可以參考下
    2015-06-06
  • 淺析C#中g(shù)oto跳轉(zhuǎn)語句的用法

    淺析C#中g(shù)oto跳轉(zhuǎn)語句的用法

    在我們?nèi)粘9ぷ髦谐S玫腃#跳轉(zhuǎn)語句有break、continue、return,但是還有一個C#跳轉(zhuǎn)語句很多同學可能都比較的陌生就是goto,下面我們就來看看goto跳轉(zhuǎn)語句的用法吧
    2024-03-03
  • C#復(fù)制數(shù)組的兩種方式及效率比較

    C#復(fù)制數(shù)組的兩種方式及效率比較

    這篇文章介紹了C#復(fù)制數(shù)組的兩種方式及效率比較,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-10-10
  • unity學習教程之定制腳本模板示例代碼

    unity學習教程之定制腳本模板示例代碼

    這篇文章主要給大家介紹了關(guān)于unity學習教程之定制腳本模板的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-12-12
  • 輕松學習C#的基礎(chǔ)入門

    輕松學習C#的基礎(chǔ)入門

    輕松學習C#的基礎(chǔ)入門,了解C#最基本的知識點,C#是一種簡潔的,類型安全的一種完全面向?qū)ο蟮拈_發(fā)語言,是Microsoft專門基于.NET Framework平臺開發(fā)的而量身定做的高級程序設(shè)計語言,需要的朋友可以參考下
    2015-11-11
  • C#代碼延時的幾種實現(xiàn)

    C#代碼延時的幾種實現(xiàn)

    本文主要介紹了C#代碼延時的幾種實現(xiàn),主要介紹了三種方法,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08

最新評論

保康县| 东台市| 集安市| 韩城市| 绥滨县| 平阴县| 霍邱县| 泰宁县| 贡觉县| 磐石市| 团风县| 平阴县| 潮安县| 禹城市| 高邑县| 琼结县| 湘乡市| 固阳县| 华池县| 舟曲县| 通榆县| 黄山市| 宝应县| 永安市| 长子县| 碌曲县| 馆陶县| 巩义市| 丹巴县| 临颍县| 绵竹市| 水城县| 石狮市| 任丘市| 大新县| 建水县| 横山县| 正镶白旗| 临海市| 神农架林区| 德惠市|