麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > C# > 正文

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

2020-01-24 03:44:23
字體:
供稿:網(wǎng)友
賦值運(yùn)算符也有和算數(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類的對象,程序可以生成許多不同類型的隨機(jī)數(shù)字。做法很簡單,只需要調(diào)用方法nextInt()和nextFloat()即可(或nextLong()或者nextDouble())。傳遞給nextInt()的參數(shù)設(shè)置了所產(chǎn)生的隨機(jī)數(shù)的上限,而其下線為0,但是這個(gè)下線并不是我們想要的,因?yàn)樗麜a(chǎn)生除0的可能性,所以做了+1的操作。
一元操作符中編譯器會自動判斷+,-號的作用
比如:x=a*-b;編譯器可以編譯其含義b前-號是負(fù)號但為了避免讀者混淆最佳的寫法是
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中提供的打量快捷運(yùn)算中遞增和遞減運(yùn)算時(shí)兩種相當(dāng)不錯(cuò)又快捷的運(yùn)算(通常被稱為"自動遞增"和"自動遞減"運(yùn)算)。其中,遞減操作符是"--",意私事減少一個(gè)單位,遞增是"++"意思是增加一個(gè)單位
++a等價(jià)于a=a+1遞減亦同
遞增,遞減又分為"前綴式"和"后綴式"。
對于前綴式:++a,--a,會先執(zhí)行運(yùn)算,再生成值。而對于后綴式a++,a--,會先生成值,在執(zhí)行運(yùn)算。
復(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
從上面這個(gè)例子中可以看書前綴式和后綴式的區(qū)別
遞增操作符正是c++這個(gè)名字的一種解釋,"超越c一步"
關(guān)系操作符
關(guān)系操作符主要生成的的是一個(gè)boolean布爾結(jié)果,他們比較值之間的結(jié)果如果為真返回true,如果為假則返回false,關(guān)系操作符包括<,>,<=,>=,==,!=(不等于),等于和不等于適合于所有基本數(shù)據(jù)類型,而其他的操作符不適合對boolean值的操作,因?yàn)閠rue和false兩個(gè)之間不存在大于或小于的關(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)容。
如果相比較兩對象的實(shí)際內(nèi)容是否相同的話要怎么做?需要使用所有對象都適用的equals()方法。但這個(gè)方法不適用于基本類型,基本類型直接使用==,!=即可
復(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的默認(rèn)其實(shí)是比較引用。所以除非在自己的新類中重寫equals方法、否則是不能達(dá)到我們預(yù)期的效果的。
關(guān)系操作符

Operator

Use

Description

>

op1 > op2

當(dāng)op1 大于op2 時(shí)返回true

>=

op1 >= op2

當(dāng)op1 大于或等于op2 時(shí)返回true

<

op1 < op2

當(dāng)op1 小于op2 時(shí)返回true

<=

op1 <= op2

當(dāng)op1 小于或等于op2 時(shí)返回true

==

op1 == op2

當(dāng)op1 等于大于op2 時(shí)返回true

!=

op1 != op2

當(dāng)op1 不等于op2 時(shí)返回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)換成適當(dāng)?shù)男问健?
應(yīng)注意的是在程序上對浮點(diǎn)數(shù)的比較是非常嚴(yán)格的。
條件操作符

Operator

Use

Description

&&

op1 && op2

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

||

op1 || op2

當(dāng)op1和op2有一個(gè)是true時(shí),返回true;如果op1的值是true,則不運(yùn)算右邊的操作數(shù)

!

! op

當(dāng)op是false時(shí),返回true;當(dāng)op是true時(shí),返回false

&

op1 & op2

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

|

op1 | op2

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

^

op1 ^ op2

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

短路
當(dāng)使用邏輯操作符的時(shí)候會遇到一種短路狀況。既一但能夠明確無誤地確定整個(gè)表達(dá)式的值,就不再計(jì)算表達(dá)式余下的部分了。因此,整個(gè)邏輯表達(dá)式靠后的部分有可能不再計(jì)算。下面的例子展示了短路現(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個(gè)方法你會很自然的覺得3個(gè)方法應(yīng)該都被運(yùn)行,但實(shí)際上輸出并非這樣,因?yàn)樵诘诙螠y試產(chǎn)生一個(gè)false結(jié)果。由于這意味著整個(gè)表達(dá)式肯定為false,所以沒必要繼續(xù)計(jì)算剩余的表達(dá)式,那樣只是浪費(fèi)。“短路“一次正來源于此。實(shí)際上,邏輯上所有的邏輯表達(dá)式都有一部分不必計(jì)算,那將獲得性能的提升。
三元操作符
三元操作符也成為條件操作符,他顯得比較特別,因?yàn)橛腥齻€(gè)操作數(shù),但是他又確實(shí)屬于操作符的一種
其形式為
boolean-exp?value0 :value1
如果boolean-exp表達(dá)式結(jié)果為true,就計(jì)算value0,而且這個(gè)計(jì)算結(jié)果也就是操作符最終產(chǎn)生的值。如果boolean-exp表達(dá)式結(jié)果為false,就計(jì)算value1,同樣的,他的結(jié)果也將成為操作符最后的值。
當(dāng)然它也可以被if-else代替,但是三元操作符與if-else是完全不同的,操作符會產(chǎn)生一個(gè)值。
復(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
相比之下三元運(yùn)算符要緊湊很多,而if-else更易理解
字符串操作符+和+=
Java中+和+=操作符除了之前講到的作用外,在特殊的上下文環(huán)境中是可以用作字符連接的。所以他們又稱為字符串操作符,字符串操作符有一些很有趣的行為。如果表達(dá)式以一個(gè)字符串起頭,那么后續(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,是因?yàn)榫幾g器將他們自動轉(zhuǎn)化成了字符串形式,最后部分用+=講一個(gè)字符串追加到了s上,并且用括號來控制了編譯器的轉(zhuǎn)換,使他們可以順利求和。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 欧美综合成人 | 视频一区国产 | 午夜色视频在线观看 | 精品一区二区三区在线观看国产 | h视频免费看| 国内精品久久久久久久影视红豆 | 91精品国产综合久久久欧美 | 无码av女优 | 久久草在线观看视频 | 久草在线视频网 | 欧美日韩国产成人在线观看 | 中文字幕电影免费播放 | 72pao成人国产永久免费视频 | 国产亚洲精品美女久久久 | 国产在线91 | 久久久久免费精品 | 亚洲一区二区三区视频免费 | 男女无遮挡羞羞视频 | 亚洲日本欧美 | 激情小说另类 | 素人视频在线观看免费 | 成人一级黄色 | 日韩黄色影视 | 久在线观看福利视频69 | 久久久一区二区 | 成人福利视频 | 久草在线观看首页 | 在线成人亚洲 | 国产精品18久久久久久久 | 日本在线一区二区 | 一本视频在线观看 | 国产自在线| 香蕉久草视频 | 婷婷久久综合九色综合色多多蜜臀 | 国产精品久久久久久久久久电影 | 久久精品视频16 | 久久亚洲美女视频 | 亚洲国产网址 | 国产精品刺激对白麻豆99 | 操嫩草| 免费黄色小视频网站 |