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输出讯息输出格式控制控制字符作用反斜杠单引号双引号uxxxx以16进位数指定Unicode字符输出xxx以8进位数指定Unicode字符输出b倒退一个字符f换页n换行r游标移至行首t跳格(一个Tab键)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);格式字符作用%在字符串中显示%d以10进位整数方式输出,提供的数必须是Byte、Short、Integer、Long、或BigInteger%f将浮点数以10进位方式输出,提供的数必须是Float、Double或 BigDecimal%e,%E将浮点数以10进位方式输出,并使用科学记号,提供的数必须是Float、Double或BigDecimal%a,%A使用科学记号输出浮点数,以16进位输出整数部份,以10进位输出指数部份,提供的数必须是Float、Double、BigDecimal%o以8进位整数方式输出,提供的数必须是Byte、Short、Integer、Long、或BigInteger%x,%X将浮点数以16进位方式输出,提供的数必须是Byte、Short、Integer、Long、或BigInteger%s,%S将字符串格式化输出%c,%C以字符方式输出,提供的数必须是Byte、Short、Character或 Integer%b,%B将true或false输出(或TRUE、FALSE,使用%B)。另外,非null值输出是true,null值输出是false%t,%T输出日期/时间的前置,详请看在线API文件 输出格式控制可以在输出浮点数时指定精度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;比较、条件运算大于()、不小于(=)、小于()、不大于(5结果+(10 5);System.out.println(10=5结果+(10=5);System.out.println(10 5结果+(10 5);System.out.println(10=5结果+(10=60?是:否);System.out.println(是否为奇數?+(number%2!=0?是:否);逻辑、位运算且(&)、或(|)、反相(!)&(AND)、|(OR)、(XOR)与(补码)int number=75;System.out.println(number 70&number 80|number 80|number 75);System.out.println(0 AND 0tt+(0&0);System.out.println(0 AND 1tt+(0&1);System.out.println(1 AND 0tt+(1&0);System.out.println(1 AND 1tt+(1&1);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);递增、递减运算指定运算符范例结果+=a+=ba=a+b-=a-=ba=a-b*=a*=ba=a*b/=a/=ba=a/b%=a%=ba=a%b&=a&=ba=a&b|=a|=ba=a|b=a=ba=a b=a=ba=a=a=ba=a bif条件式语法复合陈述句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&score=70&score=60&score 70)System.out.println(得D);else System.out.println(得E(不及格);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、continuebreak可以离开目前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、continuebreak与continue还可以配合标签使用 back:for(int i=0;i 10;i+)if(i=9)System.out.println(break);break back;System.out.println(test);break、continuebreak与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);