java中單引號和雙引號區別和用法
區別1:java中的單引號表示字符,雙引號表示字符串。
區別2:單引號引的數據一般是char類型的;雙引號引的數據 是String類型的。
區別3:java中單引號里面只能放一個字母或數字或符號;java中的雙引號里面是0到多個字符構成。所以字符可以直接轉換成字符串。字符串需要使用charAt(n) 來獲取第幾個字符。
char定義時用單引號,只能有一個字母,數字。char c='c';而String用雙引號,可以是一個,也可能是多個字母,漢字等。就是所謂的字符串。String s="adsaf";
char只是一個基本類型,而String 可以是一個類,可以直接引用。比如char c='c';不能直接對c調用方法。String s="abc"; 這時可以調用s.charAt(0);等方法,因為String是類,這是就是對象的調用了。
一.java 基本語法--運算符
java中常用的算術運算符是:+加、-減、*乘、/除、%取模
其實%運算可以得到兩個數的余數。
一.算術運算符:++自加、--自減。
這兩個運算符比較特殊,請大家思考一下:
int a=90;
a++;????????? 等同于(a=a+1)
這時a等于?91
int b=89;
b--;????????? 等同于(b=b-1)
這時b等于?88
inta=56;
intb=a++;?
System.out.println(b);56
System.out.println(a);57
int b=++a;相當于a=a+1再將b=a;
?int b=a++;相當于b=a再將a=a+1。
算術運算符:+=左加.-=左減./=左除.%=左取模
請大家看看幾個案例,就明白了:
inta=90;
a+=90;?????????? (相當于a=a+90)
請問,a現在等于多少?180
float b=89.7f;
b+=a;??????????? (相當于b=b+a)
請問,b現在等于多少?269.7
int a=56;int b=90;
a-=34;b%=a;?????? (相當于a=a-34,b=b%a)
System.out.println(b);2
System.out.println(a);22
運算符
二.關系運算符
1、==等于;2、>大于;3、<小于;4、>=大于等于;5、<=小于等于;6、!=不等于
案例:
/*請編寫一個程序,該程序可以接收兩個數
(可以是整數,也可是小數)并判斷兩個數是大于?小于?還是等于? */
package day2;
import java.io.*;
import java.io.InputStreamReader;
public class shuru {
? ? public static void main(String []args){
? ? ? ? try{
? ? ? ? ? ? //輸入流從鍵盤接收數
? ? ? ? ? ? InputStreamReader isr = new InputStreamReader(System.in);
? ? ? ? ? ? BufferedReader br = new BufferedReader(isr);
? ? ? ? ? ? //給出提示
? ? ? ? ? ? System.out.println("請輸入第一個數");
? ? ? ? ? ? //從控制臺讀取一行數據
? ? ? ? ? ? String a1 = br.readLine();
? ? ? ? ? ? System.out.println("請輸入第二個數");
? ? ? ? ? ? String a2 = br.readLine();
? ? ? ? ? ? //把String轉float
? ? ? ? ? ? float num1 = Float.parseFloat(a1);
? ? ? ? ? ? float num2 = Float.parseFloat(a2);
? ? ? ? ? ? if(num1>num2){System.out.println("第一個大");}
? ? ? ? ? ? if(num1==num2){System.out.println("相等");}
? ? ? ? ? ? if(num1<num2){System.out.println("第二個大");}
? ? ? ? }catch(Exception e){
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? }
}
三.運算符--邏輯運算符
用于判斷邏輯關系的運算符
1、&&與;? 2、||或;? 3、!非
&&與的運算關系,真真為真,其它都為假。
||或的運算關系,假假為假,其它都為真。
!非的運算關系,真取假,假取真
二.java基本語法----三大流程控制
1順序控制
聽其名而知其意,讓程序可以順序的執行。
請大家看個案例[demo11.java]:
int a=7;
System.out.println("a="+a);
System.out.println("hello!");
a++;
System.out.println("a="+a);
System.out.println("0(∩_∩)0");
a++;
System.out.println("a="+a);
2分支控制
讓程序有選擇的執行,分支控制有三種:
1、 單分支;2、雙分支;3、多分支a
1、單分支語法:
??? if(條件表達式){
??????? 語句;
??? }
2、雙分支語法:
??? if(條件表達式){
??????? 語句;
??? }else{
??????? 語句;
??? }
3.1、多分支語法:
??? if(條件表達式){
??????? 語句;
??? }else if(條件表達式){
??????? 語句;
??? }else if(條件表達式){
??????? 語句;
??? }else{
??????? 語句;
??? }
3.2、多分支語法:
??? switch(條件表達式){ //***條件表達式數據類型,就和case常量表達式一致,否則就會報錯。
??? case常量1:
??????? 語句1;
??????????? ???? //語句1至break中相當于{}可以加入相應程序代碼
??????? break;? //break,表示跳出switch語句
??? case常量2:
??????? 語句1;
??????? break;
??????? ...
??? case常量n:
??????? 語句n;
??????? break;
??? default:
??????? 語句;
??????? break;
??? }
*****:switch中的可用數據類型主要是:允許byte,short,int,char,enum等
eg:編寫一個程序,可以輸入人的年齡,如果該同志的年齡大于18歲,則輸出“你年齡大于18,要對自己的行業負責,送入監獄”。如果該同志的年齡大于10歲并且小于等于18,則輸出“你的年齡也不小了,把你送少管所”。其它情況,則輸出“小孩子,下次注意”。
package day3;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class demo2 {
? ? public static void main(String[] args) {
? ? ? ? try{
? ? ? ? InputStreamReader isr =new InputStreamReader(System.in);
? ? ? ? BufferedReader br = new BufferedReader(isr);
? ? ? ? System.out.println("輸入年齡");
? ? ? ? String a1 = br.readLine();
? ? ? ? float num1 = Float.parseFloat(a1);
? ? ? ? if(num1>18){
? ? ? ? ? ? System.out.println("你年齡大于18,要對自己的行業負責,送入監獄");
? ? ? ? }
? ? ? ? else if(num1>10 && num1<=18){
? ? ? ? ? ? System.out.println("你的年齡也不小了,把你送少管所");
? ? ? ? }else{
? ? ? ? ? ? System.out.println("小孩子,下次注意");
? ? ? ? }
? ? ? ? }catch(Exception e){
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? }
}
對比switch與if語句在執行分支語句的區別。
***switch分支語句不支持判斷類型即boolean類型,switch只支持byte,short,int,char,enum等數據類型
練習:
1、雙分支控制作業.
編寫一個程序,可以輸入人的年齡,如果該同志的年齡大于18歲,則輸出“你年齡大于18歲,要對自己的行為負責!”否則,輸出“你的年齡不大這次放過你了”
package day3;
import java.io.*;
import java.io.BufferedReader;
public class demo01 {
? ? public static void main(String []args){
? ? ? ? try{
? ? ? ? ? ? //接收從鍵盤輸入的數
? ? ? ? ? ? InputStreamReader isr = new InputStreamReader(System.in);
? ? ? ? ? ? BufferedReader br = new BufferedReader(isr);
? ? ? ? ? ? //提示
? ? ? ? ? ? System.out.println("請輸入年齡");
? ? ? ? ? ? //從控制臺讀取一行數據
? ? ? ? ? ? String a1 = br.readLine();
? ? ? ? ? ? //將string轉float
? ? ? ? ? ? float num1 = Float.parseFloat(a1);
? ? ? ? ? ? if(num1<18){
? ? ? ? ? ? ? ? System.out.println("你的年齡是"+num1);
? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? System.out.println("你年齡大于18,要為自己的行為負責!");
? ? ? ? ? ? }
? ? ? ? }catch(Exception e){
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? }
}
2.多分支控制:
編寫一個程序,可以輸入人的年齡,如果該同志的年齡大于18歲,則輸出“你年齡大于18,要對自己的行業負責,送入監獄”。如果該同志的年齡大于10歲并且小于等于18,則輸出“你的年齡也不小了,把你送少管所”。其它情況,則輸出“小孩子,下次注意”。
package day3;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class demo2 {
? ? public static void main(String[] args) {
? ? ? ? try{
? ? ? ? InputStreamReader isr =new InputStreamReader(System.in);
? ? ? ? BufferedReader br = new BufferedReader(isr);
? ? ? ? System.out.println("輸入年齡");
? ? ? ? String a1 = br.readLine();
? ? ? ? float num1 = Float.parseFloat(a1);
? ? ? ? if(num1>18){
? ? ? ? ? ? System.out.println("你年齡大于18,要對自己的行業負責,送入監獄");
? ? ? ? }
? ? ? ? else if(num1>10 && num1<=18){
? ? ? ? ? ? System.out.println("你的年齡也不小了,把你送少管所");
? ? ? ? }else{
? ? ? ? ? ? System.out.println("小孩子,下次注意");
? ? ? ? }
? ? ? ? }catch(Exception e){
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? }
}
3.多分支控制:
請編寫一個程序,該程序可以接收一個字符,比如:a,b,c,d,e,f,g
a表示星期一,b表示星期二...根據用戶的輸入顯示相應的信息,要求使用switch語句完成。
package day3;
import java.io.*;
import java.util.Scanner;
public class demo3 {
? ? public static void main(String[] args){
? ? ? ? try{
? ? ? ? ? ? //根據用戶輸入判斷今天星期幾
? ? ? ? ? ? //請編寫一個程序,該程序可以接收一個字符,比如:a,b,c,d,e,f,g
? ? ? ? ? ? //a表示星期一,b表示星期二 …
? ? ? ? ? ? //根據用戶的輸入顯示相應的信息.要求使用 switch 語句完成
? ? ? ? /*思路分析
? ? ? ? ? ? 1. 接收一個字符 , 創建Scanner對象
? ? ? ? ? ? 2. 使用switch 來完成匹配,并輸出對應信息
? ? ? ? 代碼*/
? ? ? ? ? ? Scanner myScanner = new Scanner(System.in);
? ? ? ? ? ? System.out.println("請輸入一個字符(a-g)");
? ? ? ? ? ? char c1 = myScanner.next().charAt(0);
? ? ? ? ? ? switch(c1){
? ? ? ? ? ? ? ? case 'a':
? ? ? ? ? ? ? ? ? ? System.out.println("周一");
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case 'b':
? ? ? ? ? ? ? ? ? ? System.out.println("周二");
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case 'c':
? ? ? ? ? ? ? ? ? ? System.out.println("周三");
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case 'd':
? ? ? ? ? ? ? ? ? ? System.out.println("周四");
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case 'e':
? ? ? ? ? ? ? ? ? ? System.out.println("周五");
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case 'f':
? ? ? ? ? ? ? ? ? ? System.out.println("周六");
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case 'g':
? ? ? ? ? ? ? ? ? ? System.out.println("周日");
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? default:
? ? ? ? ? ? ? ? ? ? System.out.println("請輸入a-g");
? ? ? ? ? ? }
? ? ? ? }catch(Exception e){
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? }
}
3循環控制
聽其名而知其意,就是讓你的代碼可以循環的執行。
循環控制有三種
1、for循環語法:
??? for(循環初值;循環條件;步長){
??????? 語句;?//循環體
??? }
2、while循環語法:
??? while(循環條件){
??????? 語句;?//循環體
??? }
特別說明:while循環是先判斷在執行語句。
3、do
while循環 語法:
??? do{
??????? 語句;?//循環體
??? }while(循環條件);
特別說明:do while循環是先執行,再判斷。
eg:寫一個三角形
package day3;
//請編寫一個程序,可以接收一個整數,表示層數,打印出金字塔一半
public class demo4 {
? ? public static void main(String []args){
? ? ? ? int lay =4;
? ? ? ? //lay表示層數
? ? ? ? for(int i=1;i<=lay;i++){
? ? ? ? ? ? for(int j=1;j<=i;j++){
? ? ? ? ? ? ? ? System.out.print("*");
? ? ? ? ? ? }
? ? ? ? ? ? System.out.println("\n");
? ? ? ? }
? ? }
}
注意System.out.print()和System.out.println()的區別
eg:金字塔
package day3;
public class demo5 {
? ? public static void main(String []args){
? ? ? ? int lay = 4;
? ? ? ? for(int i=1;i<=lay;i++){
? ? ? ? ? ? //規律 ?
? ? ? ? ? ? //1=>3 2=>2 3=>1 4=>0 空格的規律
? ? ? ? ? ? for(int k=1;k<=lay-i;k++){
? ? ? ? ? ? ? ? System.out.print(" ");
? ? ? ? ? ? }
? ? ? ? ? ? //print *
? ? ? ? ? ? //1=>1 2=>3 3=>5 ?4=>7*的規律
? ? ? ? ? ? for(int j=1;j<=(i-1)*2+1;j++){
? ? ? ? ? ? ? ? System.out.print("*");
? ? ? ? ? ? }
? ? ? ? ? ? System.out.println();
? ? ? ? }
? ? }
}
eg:鏤空金字塔
public class?demo6{
??? public static void main(String []args){
??????? int lay=10;//表示有多少層
??????? for(int i=1;i<=lay;i++){
??????? ??? //找出規律
??????????? //1->32->2 3->1 4->0找出空格
??????????? for(int k=1;k<=lay-i;k++){
??????????? System.out.print("");
??????????? }
??????? ??? //打印*
??????????? //1->12->3 3->5 4->7找出星的規律
??????? ??? for(int j=1;j<=(i-1)*2+1;j++){
??????????????? //判斷該層是否是頂層或者是底層
??????????? ??? if(i==1||i==lay){
??????????????? System.out.print("*");
??????????????? }else{
??????????????????? //如果是第一個*
??????? ??????????? if(j==1 || j==(i-1)*2+1){
??????????????????? System.out.print("*");
??????????????????? }else{
??????????????????????? System.out.print("");
??????????????????? }
??????????????? }
??????????? }
??????? ??? System.out.println();//換行
??????? }
??? }
}
eg:空心菱形
public class Demo7{
??? public static void main(String []args){
??????? int lay=4;//菱形上半部行數
??????? for(int i=1;i<=lay-1;i++){//判斷循環上半部分
??????????? for(int k=1;k<=lay-i;k++){//找行內*號前輸出空格
??????????????? System.out.print("");
??????????? }
??????????? for(int j=1;j<=(i-1)*2+1;j++){//找行內輸出星的位置
??????????????? if(j==1||j==(i-1)*2+1){? //判斷行最小長度和最大長度,并在最小長度和最大長度上輸出*號,行內輸入出空格。
??????????????????? System.out.print("*");
??????????????? }else{
??????????????????? System.out.print("");
??????????????? ?}
??????????? }
??????????? System.out.println();//換行
??????? }
??????? for(int i=1;i<=lay;i++){?//判斷循環菱形下半部分
??????????? for(int k=1;k<=i-1;k++){//判斷循環找*號前要輸出空格處
??????????? ??? System.out.print(" ");
??????????? }
??????????? for(int j=1;j<=(lay-i)*2+1;j++){//判斷循環行長度
??????????????? if(j==1||j==(lay-i)*2+1){//判斷行最小長度和最大長度,并在最小長度和最大長度上輸出*號,行內輸入出空格。
??????????????????? System.out.print("*");
??????????????? }else{
??????????????????? System.out.print("");
??????????????? ?}
??????????? }
??????????? System.out.println();//輸出換行
??????? }
??? }
}
eg:實心菱形
public class Demo104{
??? publicstatic void main(String []args){
??????? intlay=4;//菱形上半部行數
??????? for(inti=1;i<=lay-1;i++){ //判斷循環上半部分
??????????? for(intk=1;k<=lay-i;k++){//找行內*號前輸出空格
??????????????? System.out.print("");
??????????? }
??????????? for(intj=1;j<=(i-1)*2+1;j++){//找行內輸出星的位置
??????????????? System.out.print("*");
??????????? }
??????????? System.out.println();//換行
??????? }
??????? for(inti=1;i<=lay;i++){? //判斷循環菱形下半部分
??????????? for(intk=1;k<=i-1;k++){//判斷循環找*號前要輸出空格處
??????????????? System.out.print("");
??????????? }
??????????? for(intj=1;j<=(lay-i)*2+1;j++){//判斷循環行長度
??????????????? System.out.print("*");
??????????? }
??????????? System.out.println();//輸出換行
??????? }
??? }
}

喜歡的朋友記得點贊、收藏、關注哦!!!