1. 程式人生 > >java中運算子運算元表示式語句使用詳解

java中運算子運算元表示式語句使用詳解

1.幾個概念:
1:運算
對常量和變數進行操作的過程稱為運算。


2:運算子
對常量和變數進行操作的符號稱為運算子。


3:運算元
參與運算的常量或者變數稱為運算元。


4:表示式
用運算子把常量或者變數連線起來符合java語法的式子就可以稱為表示式。
   不同運算子連線的式子體現的是不同型別的表示式。
a
a + b
a > b


運算子:
算術運算子
賦值運算子
比較運算子
邏輯運算子
三目運算子


算術運算子:
+,-,*,/,
%,++,--

2./和%的區別?
/:除法,得到商
符號相同為正,不同為負
%:除法,得到餘數
符號和第一個運算元相同


%的應用:
x%3 等於 0 說明x能被3整除
x%2 等1   說明x是奇數
等0  說明x是偶數

3.++,--運算子(講完之後做練習)
作用:++就是加1,--就是減1。
 自增自減運算子


++,--在運算的時候,可以放在運算元的前面,也可以放在運算元的後面
A:單獨使用
沒有區別
B:參與其他操作使用
後面:先操作,再自增
前面:先自增,再操作
class OperatorDemo3 {
public static void main(String[] args) {
int a = 3;
System.out.println(a);
System.out.println("-------------");
//a++;
//++a;
//System.out.println(a);


//int b = a++;
int b = ++a;
System.out.println(a);
System.out.println(b);
}
}




4.賦值運算子:
基本:=
擴充套件:+=


擴充套件的賦值運算子隱含了強制型別轉換:
int a = 10;
a += 20;
a = (a的資料型別)(a + 20)



5.關係運算符:
==,!=,>,>=,<,<=


注意:
A:比較運算子的結果肯定是boolean。
B:你到底是使用"="還是使用"==",你自己要清楚。


6.邏輯運算子:
&,|,!,^
&&,||


注意:
邏輯運算子用於連線關係表示式


結論:
&: 有false則false
|: 有true則true
!:改變結果,取反
^:相同false,不同true
記憶:情侶關係(男男,男女,女男,女女)

7.最常用的邏輯運算子;
!,&&,||


&&和&:
結果一樣,但是&&具有短路效果,左邊如果是false,右邊不執行。
||和|:
結果一樣,但是||具有短路效果,左邊如果是true,右邊不執行。

8.操作資料的個數。
三元運算子:
格式:?:


(比較表示式)?表示式1:表示式2;

執行流程:
如果條件為true,運算後的結果是表示式1;
如果條件為false,運算後的結果是表示式2;
需求:獲取兩個資料中的最大值
巢狀使用(獲取三個數的最大值)


9.我們目前在寫程式的時候,資料值都是固定的,但是實際開發中,資料值肯定是變化的,
所以,我準備把資料改進為鍵盤錄入,提高程式的靈活性。


鍵盤錄入資料的步驟:
A:導包
import java.util.Scanner;
位置:class之前,上面
B:建立鍵盤錄入物件
Scanner sc = new Scanner(System.in);
C:獲取鍵盤錄入資料
int i = sc.nextInt();

需求:鍵盤錄入兩個資料,並對這兩個資料求和,輸出其結果


分析:
A:鍵盤錄入兩個資料
三步實現
B:對這兩個資料求和
C:輸出其結果

需求:鍵盤錄入兩個資料,獲取這兩個資料中的最大值

需求:鍵盤錄入兩個資料,比較這兩個資料是否相等

10.流程控制語句:
A:順序結構(沒有基本格式,從上往下依次執行)
B:選擇結構(有格式)
if
switch
C:迴圈結構(有格式)
for
while
do...while


順序結構:
寫在前面的先執行,寫在後面的後執行

11.if語句
三種格式。




11.1 if語句格式1:
if(比較表示式) {
    語句體
}


執行流程:
首先判斷比較表示式看其結果是true還是false
如果是true就執行語句體
如果是false就不執行語句體

需求:1.如果我得了100分爸爸就給我買飛機
 2.如果數字是10,就輸出10這個數字

if語句的注意事項:
A:比較表示式無論簡單還是複雜,結果必須是boolean型別
B:一般來說:
有左大括號就沒有分號,有分號就沒有左大括號


11.2 if語句格式2:
if(比較表示式) {
    語句體1;
}else {
    語句體2;
}


執行流程:
首先判斷關係表示式看其結果是true還是false
如果是true就執行語句體1
如果是false就執行語句體2
需求:1.判斷兩個數的最大值(用if和三元實現)
 2.判斷兩個數是否相等(用if和三元實現)

11.3 if語句的三種格式:
格式1:適合做一種情況的判斷
格式2:適合做二種情況的判斷
格式3:適合做多種情況的判斷


if語句格式3:
if(比較表示式1) {
    語句體1;
}else  if (比較表示式2) {
語句體2;
}

else {
語句體n+1;
}


執行流程:
首先判斷關係表示式1看其結果是true還是false
如果是true就執行語句體1
如果是false就繼續判斷關係表示式2看其結果是true還是false
如果是true就執行語句體2
如果是false就繼續判斷關係表示式…看其結果是true還是false

如果沒有任何關係表示式為true,就執行語句體n+1。


需求:
鍵盤錄入學生成績,根據學生成績判斷,輸出學生等級
90-100 A
80-89B
70-79C
60-69D
60以下E

練習:
需求:鍵盤錄入x的值,計算出y的並輸出。
x>=3y = 2x + 1;
-1<=x<3 y = 2x;
x<=-1y = 2x – 1;



需求:鍵盤錄入月份的值,輸出對應的季節。
春 3,4,5
夏 6,7,8
秋 9,10,11
冬 12,1,2


獲取三個資料中的最大值
if語句的巢狀。
if() {
if語句
}

12 .switch語句的格式:
switch(表示式) {
case 值1:
語句體1;
break;
   case 值2:
語句體2;
break;
   …
   default:
語句體n+1;
break;
}




格式解釋:
A:switch表示這是switch語句
B:表示式
表示式的取值:byte,short,int,char
JDK5以後可以是列舉
JDK7以後可以是String
C:case後面跟的是要和表示式進行比較的值
D:語句體部分可以是一條或多條語句
E:break表示中斷,結束的意思,可以結束switch語句
F:default語句表示所有情況都不匹配的時候,就執行該處的內容,和if語句的else相似。


執行流程:
首先計算出表示式的值
其次,和case依次比較,一旦有對應的值,就會執行相應的語句,在執行的過程中,遇到break就會結束。
最後,如果所有的case都和表示式的值不匹配,就會執行default語句體部分,然後程式結束掉。


需求:
鍵盤錄入一個數字(1-7),輸出對應的星期幾。

13.switch語句的注意事項:
A:case後面只能是常量,不能是變數。
B:多個case後面的值不能出現相同的。
C:default可以省略嗎?
可以。但是不建議。
D:break可以省略嗎?
可以。但是不建議。
容易出現case穿透。
E:default的位置一定要在最後嗎?
可以在任意位置,建議在最後。
F:switch語句的結束條件
a:遇到break
b:執行到末尾


練習:
1.class SwitchTest {
public static void main(String[] args) {
int x = 2;
int y = 3;


/*
switch(x){
default:
y++;
break;
case 3:
y++;
case 4:
y++;
}
*/


/*
switch(x){
default:
y++;
case 3:
y++;
case 4:
y++;
}
*/


switch(x){
case 3:
y++;
case 4:
y++;
}


System.out.println("y="+y);


}
}
1.輸入數字,輸出對應的星期

2.模擬做單項選擇題,根據你的選擇,給出對應的答案。(表示式是字元的情況)

3.用switch語句實現鍵盤錄入月份,輸出對應的季節
if語句和switch語句的各自使用場景:
if語句使用場景:
A:針對結果是boolean型別的判斷
B:針對一個範圍的判斷
C:針對幾個常量值的判斷


switch語句使用場景:
針對幾個常量值的判斷


switch語句能夠實現的,if一定能夠實現。反之不成立

14.迴圈語句組成:
A:初始化語句
一條或者多條語句,這些語句完成一些初始化操作。
B:判斷條件語句:
這是一個boolean表示式,這個表示式能決定是否執行迴圈體。
C:迴圈體語句
這個部分是迴圈體語句,也就是我們要多次做的事情。
D:控制條件語句
這個部分在一次迴圈體結束後,下一次迴圈判斷條件執行前執行。
通過用於控制迴圈條件中的變數,使得迴圈在合適的時候結束。


迴圈:
for
while
do..while


for迴圈:
for(初始化語句;判斷條件語句;控制條件語句) {
迴圈體語句;
}


執行流程:
A:執行初始化語句
B:執行判斷條件語句
如果是true:就繼續執行。
如果是false:就結束迴圈。
C:執行迴圈體語句
D:執行控制條件語句
E:回到B


執行次數:
A:初始化語句 
只執行一次
B:判斷條件語句
一次以上
C:迴圈體語句和控制條件語句
0次以上


需求:
請在控制檯輸出10次"HelloWorld"

15.需求:
A:請在控制檯輸出資料1-10
B:請在控制檯輸出資料10-1
16.
求出1-10之間資料之和


分析:
A:獲取1-10的資料
for迴圈就OK了。
B:定義一個求和變數,用於儲存求和的結果。
求和變數的初始化值是0。
C:看如下的格式:
0+1=1
1+2=3
3+3=6
6+4=10
10+5=15
...


看每一個式子:
int sum = 0;
1 = 0 + 1 // sum = sum + 1;
3 = 1 + 2 // sum = sum + 2;
6 = 3 + 3 // sum = sum + 3;
10 = 6 + 4 //...
15 = 10 + 5 //...
...


求和公式:

int sum = 0;


for(int x=start; x<=end; x++) {
sum += x;
}


System.out.println(sum);




現場做:
求和1-100案例:

int sum = 0;
for(int x=1; x<=100; x++) {
sum += x;
}
System.out.println(sum);

17. 需求:求出1-100之間偶數和


分析:
如何判斷資料是偶數。


什麼樣子的資料是偶數。


2,4,6,8,10,...


x%2 == 0

18.需求:求5的階乘


規則:
n! = n*(n-1)*(n-2)*...*3*2*1


19.while迴圈的格式:
while(判斷條件語句) {
迴圈體語句;
}


變形格式:

初始化語句;
while(判斷條件語句) {
迴圈體語句;
控制條件語句;
}


執行流程:
A:執行初始化語句
B:執行判斷條件語句
如果是true:就繼續執行。
如果是false:就結束迴圈。
C:執行迴圈體語句
D:執行控制條件語句
E:回到B


比對for迴圈:
for(初始化語句;判斷條件語句;控制條件語句) {
迴圈體語句;
}
需求:
1.請在控制檯輸出10次"HelloWorld"
2.求出1-10之間資料之和
3.求出1-100之間偶數和


20.for迴圈和while迴圈的區別
控制條件語句所控制的那個變數,在for迴圈結束後,就不能再被訪問到了,
而while迴圈結束還可以繼續使用,如果你想繼續使用,就用while,
否則推薦使用for。原因是for迴圈結束,該變數就從記憶體中消失,能夠提高記憶體的使用效率。


使用場景:
for迴圈適合針對一個範圍判斷進行操作
什麼到什麼之間,三位數等
while迴圈適合判斷次數不明確操作


21.我國最高山峰是珠穆朗瑪峰:8848m,我現在有一張足夠大的紙張,厚度為:0.01m。
請問,我摺疊多少次,就可以保證厚度不低於珠穆朗瑪峰的高度?


分析:
A:定義統計變數,初始化值是0
B:摺疊一次,厚度就是以前的2倍
C:摺疊次數不明確,用while迴圈

class WhileTest2 {
public static void main(String[] args) {
int count = 0;


int end = 884800;
int start = 1;


while(start<=end) {
//摺疊一次
start*=2;


count++;
}


System.out.println(count);
}
}


22.do...while的格式:
do {
迴圈體語句;
}while((判斷條件語句);


變形格式:


初始化語句;
do {
迴圈體語句;
控制條件語句;
}while(判斷條件語句);


執行流程:
A:執行初始化語句
B:執行迴圈體語句
C:執行控制條件語句
D:執行判斷條件語句
如果是true:就繼續執行。
如果是false:就結束迴圈。
E:回到B


for(初始化語句;判斷條件語句;控制條件語句) {
迴圈體語句;
}


23.三種迴圈的區別?
A:do…while迴圈至少會執行一次迴圈體。
B:for迴圈和while迴圈只有在條件成立的時候才會去執行迴圈體
 他們是可以相互轉換的。


我們在使用迴圈的時候到底該選擇誰呢?
優先考慮for迴圈,再考慮while迴圈,最後考慮do…while迴圈。


注意事項:
死迴圈
for(;;){}


while(true){}

24.break的使用場景:
A:在選擇結構switch語句中
B:在迴圈語句中


注意:
離開使用場景的存在是沒有意義的


break:
遇到break,就中斷整個迴圈。
預設情況下,break只能中斷它所屬的那個迴圈。


25.continue的使用場景:
在迴圈語句中

注意:
離開使用場景的存在是沒有意義的

continue  退出本次迴圈

相關推薦

java運算子運算元表示式語句使用

1.幾個概念:1:運算對常量和變數進行操作的過程稱為運算。2:運算子對常量和變數進行操作的符號稱為運算子。3:運算元參與運算的常量或者變數稱為運算元。4:表示式用運算子把常量或者變數連線起來符合java語法的式子就可以稱為表示式。   不同運算子連線的式子體現的是不同型別的

Java的異常和處理

stat 一個 局部變量 lose 出了 object sta tof .html 原文出處:代碼鋼琴家 簡介 程序運行時,發生的不被期望的事件,它阻止了程序按照程序員的預期正常執行,這就是異常。異常發生時,是任程序自生自滅,立刻退出終止,還是輸出錯誤給用戶?或者用C語

Java==和equals和區別+案例

兩個 布爾型 整數 返回 boolean 和equal clas 定義 true 一開始遇見==和equals我也是分不清,後來看了很多博客,收益匪淺, 擔心以後給忘了,所以寫下這個,以後復習可以用。 (有哪裏寫得不對的,希望可以留言幫忙改進,大家一起共同進步) 一、Jav

java==和equals的區別

字符 blog 的區別 代碼塊 數組 sss oss 兩種 內存劃分 分析前基礎了解: 一)JVM把內存劃分成兩種:一種是棧內存,一種是堆內存。   ①在函數中定義的一些基本類型的變量和對象的引用變量(變量名)都在函數的棧內存中分配。   ②當在一段代碼塊定義一個變量時

HTTP協議報文、工作原理及Java的HTTP通訊技術

一、web及網路基礎       1、HTTP的歷史            1.1、HTTP的概念:         &nb

Java 的異常和處理

原文出處: 程式碼鋼琴家 簡介 程式執行時,發生的不被期望的事件,它阻止了程式按照程式設計師的預期正常執行,這就是異常。異常發生時,是任程式自生自滅,立刻退出終止,還是輸出錯誤給使用者?或者用C語言風格:用函式返回值作為執行狀態?。 Java提供了更加優秀的

Java的Iterable與Iterator

在Java中,我們可以對List集合進行如下幾種方式的遍歷: List<Integer> list = new ArrayList<>(); list.add(5); list.add(23); list.add(42); for (int i = 0; i < list.siz

Java的IO流的

在介紹IO流之前,需要首先給大家介紹一下File的使用,及一些常用的方法。 File類 :檔案和目錄路徑名的抽象表示形式。 通俗一點說,例項化File類的一個物件,其傳入的引數就是一個路徑名(可以是絕對路徑名,也可以是相對路徑名) 例:File  file=new   

Java I/O : Java的進位制

作者:李強強 上一篇,泥瓦匠基礎地講了下Java I/O : Bit Operation 位運算。這一講,泥瓦匠帶你走進Java中的進位制詳解。 一、引子 在Java世界裡,99%的工作都是處理這高層。那麼二進位制,位元組碼這些會在哪裡用到呢? 自問自答:在跨平臺的時候,就凸顯神功了。比如說檔

Java ( Iterator ) 迭代器 ( JDK8原始碼 )

Java集合框架的集合類,我們有時候稱之為容器。容器的種類有很多種,比如ArrayList、LinkedList、HashSet...,每種容器都有自己的特點,ArrayList底層維護的是一個數組;LinkedList是連結串列結構的;HashSet依賴的是雜湊表,每種容器都有自己特有的資料結構。

Java Cloneable 、Serializable 介面

Cloneable介面 clone:它允許在堆中克隆出一塊和原物件一樣的物件,並將這個物件的地址賦予新的引用。 Java 中 一個類要實現clone功能 必須實現 Cloneable介面,否則在呼叫 clone() 時會報 CloneNotSupported

JavaNullPointerException異常的原因以及解決方法

NullPointerException是當您嘗試使用指向記憶體中空位置的引用(null)時發生的異常,就好像它引用了一個物件一樣。 當我們宣告引用變數(即物件)時,實際上是在建立指向物件的指標。考慮以下程式碼,您可以在其中宣告基本型別的整型變數x: int x; x = 10; 在

JavacompareTo()方法比較字串

中心:String 是字串,它的比較用compareTo方法,它從第一位開始比較, 如果遇到不同的字元,則馬上返回這兩個字元的ascii值差值.返回值是int型別 1.當兩個比較的字串是英文且長度不等時, 1)長度短的與長度長的字元一樣,則返回的結果是兩個長度相減的值a="hello";b

【搞定Java併發程式設計】第22篇:Java的阻塞佇列 BlockingQueue

上一篇:Java併發容器之ConcurrentHashMap詳解 本文目錄: 1、阻塞佇列的基本概念 2、ArrayBlockingQueue 2.1、ArrayBlockingQueue的基本使用 2.2、ArrayBlockingQueue原理概要 2.3、ArrayBl

【搞定Java併發程式設計】第28篇:Java的執行緒池

上一篇:Java中的併發工具類之執行緒間交換資料的 Exchanger 本文目錄: 1、執行緒池的實現原理  2、執行緒池的使用 2.1、執行緒池的建立 2.2、向執行緒池提交任務 2.3、關閉執行緒池 2.4、合理地配置執行緒池 2.5、執行緒池的監控

JavaBuilder模式的實現

前言本文主要給大家介紹了關於如何實現Builder模式,大家在構建大物件時,物件的屬性比較多,我們可以採用一個構造器或者使用空的構造器構造,然後使用setter方法去設定。在使用者使用這些方法時,會很多冗長的構造器引數列表或者setter方法。我們可以使用Builder模式來簡化大物件的構造,提高程式碼的簡潔

javaObject類的函式

1.clone方法(淺拷貝) 保護方法,實現物件的淺複製,只有實現了Cloneable接口才可以呼叫該方法,否則丟擲CloneNotSupportedException異常。 主要是JAVA裡除了8種基本型別傳引數是值傳遞,其他的類物件傳引數都是引用傳遞,我們有時候不希望在方法裡講引數改變,

Java關於包的知識點

初學者易混淆classpath的作用,對於java命令的-cp選項和javac命令的-cp選項,以及配置環境變數時的CLASSPATH.其作用是不變的,都是指定所需要的class檔案的位置.所不同的是,執行javac編譯時的-cp選項用於指定被編譯的原始檔需要呼叫另外的使用者自定義類的位置. 執行java命令

Java的Arrays類使用

首先先建立一個列印陣列的方法,方便後面直接使用 public static void output(int []a) { for(int i=0;i<a.length;i++) { System.out.pri

javaMap及Map.Entry

Map是java中的介面,Map.Entry是Map的一個內部介面。 Map提供了一些常用方法,如keySet()、entrySet()等方法。 keySet()方法返回值是Map中key值的集合;e