JavaJDK6学习笔记-ppt简体版第03章.ppt
第3章,语法入门 第一个Java程序文本模式下与程序互动数据、运算流程控制,第一个Java程序,定义类别(Class)定义区块(Block)定义main()方法(Method)撰写陈述(Statement),public class HelloJava public static void main(String args)System.out.println(嗨!我的第一个Java程序!);,给C使用者的第一個Java程序,给了C使用者类似printf()的功能,public class HelloJavaForC public static void main(String args)System.out.printf(%s!这是您的第一个Java程序!n,C语言Fan);,System.out.printf(%s!这是您的第二个Java程序!,C语言Fan).println();System.out.printf(%s!这是您的第%d 个Java程序!n,C语言Fan,3);,为程序加入批注,原始码档案中被标注为批注的文字,编译程序不会去处理它,/*作者:良葛格*功能:示范printf()方法*日期:2005/4/30*/public class ThirdJavaForC public static void main(String args)/printf()是J2SE5.0的新功能,必须安裝JDK5.0才能编译 System.out.printf(%s!这是您的第%d个Java程序!n,C语言Fan,3);,为程序加入批注,不能用巢状方式来撰写多行批注多行批注可以包括单行批注,/*批注文字1blabla/*批注文字2blabla*/*/,/*批注文字1blabla/批注文字2blabla*/,使用Scanner取得输入,在J2SE 5.0中,可以使用类别取得使用者的输入可以使用这个工具的next()功能,来取得用户的输入字符串,Scanner scanner=new Scanner(System.in);System.out.print(请输入您的名字:);System.out.printf(哈啰!%s!n,scanner.next();,System.out.print(请输入一个数字:);System.out.printf(您输入了%d!n,scanner.nextInt();,使用BufferedReader取得输入,BufferedReader建构时接受物件可使用,BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(System.in);System.out.print(请输入一列文字,可包括空白:);String text=bufferedReader.readLine();System.out.println(您输入的文字:+text);,标准输入输出串流,System类别中的静态物件out提供标准输出串流(Stream)输出通常对应至显示输出(终端机输出)可以将输出重新导向至一个档案java HelloJava HelloJavaResult.txtSystem标准输入串流in在程序开始之后它会自动开启,对应至键盘或其它的输入来源,标准输入输出串流,标准错误输出串流err在程序执行后自动开启,将指定的字符串输出至显示设备或其它指定的装置err会立即显示错误讯息err输出串流的讯息不会被重新导向,System.out.println(使用out输出讯息);System.err.println(使用err输出讯息);,java ErrDemo ErrDemoResult.txt使用err输出讯息,输出格式控制,System.out.println(u0048u0065u006Cu006Cu006F);,输出格式控制,若是使用J2SE5.0或更高的版本,/输出19的十进制表示 System.out.printf(%d%n,19);/输出19的八进制表示 System.out.printf(%o%n,19);/输出19的十六进制表示 System.out.printf(%x%n,19);,输出格式控制,可以在输出浮点数时指定精度System.out.printf(example:%.2f%n,19.234);example:19.23可以指定输出时,至少要预留的字符宽度System.out.printf(example:%6.2f%n,19.234);example:19.23补上一个空白在前端,基本的数据型态(Primitivetype),整数短整数(short)(占2个字节)整数(int)(占4个字节)长整数(long)(占8个字节)字节专门储存位数据占一个字节浮点数浮点数(float)(占4个字节)倍精度浮点数(double)(占8个字节),基本的数据型态(Primitivetype),字符 采Unicode编码前128个字符编码与ASCII编码兼容每个字符数据型态占两个字节可储存的字符范围由u0000到uFFFF布尔数占内存2个字节可储存true与false两个数值,基本的数据型态(Primitivetype),System.out.printf(short t数值范围:%d%dn,Short.MAX_VALUE,Short.MIN_VALUE);System.out.printf(int t数值范围:%d%dn,Integer.MAX_VALUE,Integer.MIN_VALUE);System.out.printf(long t数值范围:%d%dn,Long.MAX_VALUE,Long.MIN_VALUE);System.out.printf(byte t数值范围:%d%dn,Byte.MAX_VALUE,Byte.MIN_VALUE);System.out.printf(float t数值范围:%e%en,Float.MAX_VALUE,Float.MIN_VALUE);System.out.printf(double t数值范围:%e%en,Double.MAX_VALUE,Double.MIN_VALUE);,变数、常数,在Java中要使用变量,必须先宣告变量名称与数据型态使用int、float、double、char等关键词来宣告变量名称并指定其数据型态不可以使用数字作为开头不可以使用一些特殊字符,像是*&%之类不可以與Java内定的关键词同名,int age;/宣告一个整数变量double scope;/宣告一个倍精度浮点数变量,变数、常数,鼓励用清楚的名称来表明变量的作用不可以宣告变量后,而在未指定任何值给它之前就使用它编译程序在编译时会回报这个错误,int ageOfStudent;int ageOfTeacher;,variable var might not have been initialized,变数、常数,使用指定运算符=来指定变数的值,int ageOfStudent=5;double scoreOfStudent=80.0;char levelOfStudent=B;System.out.println(年級t得分t等級);System.out.printf(%4dt%4.1ft%4c,ageOfStudent,scoreOfStudent,levelOfStudent);,变数、常数,宣告变量名称的同时,加上“final”关键词来限定这个变量一但指定了值,就不可以再改变它的值,final int maxNum=10;maxNum=20;,cannot assign a value to final variable maxNum,算术运算,加(+)、减(-)、乘(*)、除(/)、余除运算符(%)System.out.println(1+2*3);System.out.println(1+2+3/4);System.out.println(double)(1+2+3)/4);,算术运算,这段程序会印出什么结果?使用下面的方法,int testNumber=10;System.out.println(testNumber/3);,int testNumber=10;System.out.println(testNumber/3.0);System.out.println(double)testNumber/3);,算术运算,将精确度大的值指定给精确度小的变量时,由于在精确度上会有遗失,编译程序会认定这是一个错误,int testInteger=0;double testDouble=3.14;testInteger=testDouble;System.out.println(testInteger);,possible loss of precisionfound:doublerequired:inttestInteger=testDouble 1 error,算术运算,必须明确加上转换的限定字,编译程序才不会回报错误%运算符是余除运算符,testInteger=(int)testDouble;,count=(count+1)%360;,比较、条件运算,大于()、不小于(=)、小于()、不大于(=)、等于(=)、不等于(!=),System.out.println(10 5结果+(10 5);System.out.println(10=5结果+(10=5);System.out.println(10 5结果+(10 5);System.out.println(10=5结果+(10=5);System.out.println(10=5结果+(10=5);System.out.println(10!=5结果+(10!=5);,比较、条件运算,条件运算符,条件式?成立传回值:失败传回值,System.out.println(该生是否及格?+(scoreOfStudent=60?是:否);System.out.println(是否为奇數?+(number%2!=0?是:否);,逻辑、位运算,且(&)、或(|)、反相(!)&(AND)、|(OR)、(XOR)与(补码),int number=75;System.out.println(number 70,System.out.println(0 AND 0tt+(0,byte number=0;System.out.println(int)(number);,逻辑、位运算,左移()、运算符,int number=1;System.out.println(2的0次:+number);number=number 1;System.out.println(2的1次:+number);number=number 1;System.out.println(2的2次:+number);number=number 1;System.out.println(2的3次:+number);,00000001 100000010 200000100 400001000 8,递增、递减运算,递增、递减运算符将递增或递减运算符撰写在变量之前或变量之后,int i=0;System.out.println(+i);System.out.println(-i);,int i=0;int number=0;number=+i;/相当於i=i+1;number=i;System.out.println(number);number=-i;/相当於i=i-1;number=i;System.out.println(number);,递增、递减运算,将递增或递减运算符撰写在变量之前或变量之后,int i=0;int number=0;number=i+;/相当於number=i;i=i+1;System.out.println(number);number=i-;/相当于number=i;i=i-1;System.out.println(number);,递增、递减运算,if条件式,语法复合陈述句,if(条件式)陈述句一;else 陈述句二;,if(条件式)陈述句一;陈述句二;else 陈述句三;陈述句四;,if条件式,Scanner scanner=new Scanner(System.in);System.out.print(请输入数字:);int input=scanner.nextInt();int remain=input%2;/求除2的余数 if(remain=1)/如果余数为1 System.out.println(input+为奇數);else System.out.println(input+为偶數);,if条件式,if中再设定执行的条件,if(条件式一)陈述句一;if(条件式二)陈述句二;陈述句三;,if(条件式一)陈述句一;/其它陈述句 else if(条件式二)陈述句二;,if(条件式一)陈述句一;/其它陈述句 else if(条件式二)陈述句二;,if条件式,Scanner scanner=new Scanner(System.in);System.out.print(输入分数:);int score=scanner.nextInt();if(score=90)System.out.println(得A);else if(score=80,switch条件式,switch的语法架构,switch(变量名称或表达式)case符合数字或字符:陈述句一;break;case符合数字或字符:陈述句二;break;default:陈述三;,Scanner scanner=new Scanner(System.in);System.out.print(请输入分數:);int score=scanner.nextInt();int level=(int)score/10;switch(level)case 10:case 9:System.out.println(得A);break;case 8:System.out.println(得B);break;case 7:System.out.println(得C);break;case 6:System.out.println(得D);break;default:System.out.println(得E(不及格);,for循环,基本语法,for(初始式;判断式;递增式)陈述句一;陈述句二;,for(int j=1;j 10;j+)for(int i=2;i 10;i+)System.out.printf(%d*%d=%2d,i,j,i*j);System.out.println();,for循环,for括号中的每个陈述区块是以分号;作区隔,而在一个陈述区块中若想写两个以上的陈述句,则使用逗号,作区隔,for(int i=2,j=1;j 10;i=(i=9)?(+j/j)+1):(i+1)System.out.printf(%d*%d=%2d%c,i,j,i*j,(i=9?n:);,while循环,Scanner scanner=new Scanner(System.in);int score=0;int sum=0;int count=-1;while(score!=-1)count+;sum+=score;System.out.print(输入分数(-1结束):);score=scanner.nextInt();System.out.println(平均:+(double)sum/count),while循环,Scanner scanner=new Scanner(System.in);int input=0;int replay=0;do System.out.print(输入整数值:);input=scanner.nextInt();System.out.println(输入数为奇数?+(input%2=1)?Y:N);System.out.print(继续(1:继续0:结束)?);replay=scanner.nextInt();while(replay=1);,break、continue,break可以离开目前switch、for、while、dowhile的区块continue只会结束其之后区块的陈述句,并跳回循环区块的开头继续下一个循环,for(int i=1;i 10;i+)if(i=5)break;System.out.println(i=+i);,for(int i=1;i 10;i+)if(i=5)continue;System.out.println(i=+i);,break、continue,break与continue还可以配合标签使用,back:for(int i=0;i 10;i+)if(i=9)System.out.println(break);break back;System.out.println(test);,break、continue,break与continue还可以配合标签使用,back1:for(int i=0;i 10;i+)back2:for(int j=0;j 10;j+)if(j=9)continue back1;System.out.println(test);,