Java理论作业(5章)
- 格式:doc
- 大小:138.00 KB
- 文档页数:5
《Java程序设计》第05章在线测试
A B
C D
A B
C D
A B
C D
A B
C D
A B
C D
D、Frame的默认布局管理器为BorderLayout
2、下列属于Swing构件的是()。
A、JMenu
B、JApplet
C、JOptionPane
D、Panel
3、下面哪些是Java中的容器()。
A、Frame
B、Panel
C、Scrollbar
D、Dialog
4、对JFrame添加构件有()方式。
A、用add方法直接加入到JFrame中。
B、建立一个Jpanel的中间容器,把构件添加到容器中,再把该容器置为JFrame的内容面板,再对其加入构
件。
C、建立一个JDesktopPane之类的中间容器,把构件添加到容器中,再把该容器置为JFrame的内容面板,再
对其加入构件。
D、用getContentPane()方法获得JFrame的内容面板,再对其加入构件。
5、在JAVA语言中,你的按钮要实现下面的功能:当鼠标按下按钮时,显示“鼠标已按下”;当释放按键时,显示“鼠标已释放”。
你必须具体定义接口MouseListener的()方法。
A、mouseClicked
B、mouseEntered
C、mousePressed
D、mouseReleaseed
第三题、判断题(每题1分,5道题共5分)
1、在Swing用户界面的程序设计中,容器不能被添加到其它容器中。
正确错误正确错误正确错误正确错误正确错误。
第5章JavaAPI练习题2⼀、填空题1. 通过循环完成查找,直到找不到⼦串为⽌,此时indexOf()⽅法返回值为【】。
2. 可以使⽤【】类的contains()⽅法,判断整串中是否包含⼦串。
3. JAVA中 int类型对应的包装类是【】。
4. 针对字符串的操作,Java提供了两个字符串类,分别是String和【】。
5. System类的【】静态⽅法可以启动垃圾回收器。
⼆、判断题1. 在JDK5.0中,switch语句可以⽀持字符串类型。
()2. StringBuffer类的append()⽅法可以将数组元素和空格连接成字符串。
()3. ceil()、floor()和round()⽅法返回的都是double类型的数。
()4. java.util.Random的nextInt( )⽅法会⽣成⼀个正整数类型的伪随机数。
()5. JAVA中拆箱是指将引⽤数据类型的对象转为基本数据类型。
()三、选择题1. 下⾯哪个选项可以获取Runtime类的实例()A: Runtime r = new Runtime();B: Runtime r = Runtime.getRuntime();C: Runtime r = Runtime.getInstance();D: 以上选项都不能获取Runtime实例2. 下列选项中,可以正确实现String初始化的是()A: String str = "abc";B: String str = 'abc';C: String str = abc;D: String str = 0;3. 若double val = Math.ceil(-11.9);,则val的值是()A: 11.9B: -11.0C: -11.5D: -12.04. 下列关于System类的描述中,错误的是()A: System类是final关键字修饰的类,它不能被其他类所继承B: System类不能被实例化C: System类中定义了许多⽅法,但是没有定义字段D: System类中提供了获取当前系统属性的⽅法5. 下列选项中,对Math.random()⽅法描述正确的是( )A: 返回⼀个不确定的整数B: 返回0或是1C: 返回⼀个随机的double类型数,该数⼤于等于0.0⼩于1.0D: 返回⼀个随机的int类型数,该数⼤于等于0.0⼩于1.0四、简答题1. 在Java中可以通过哪些⽅式对String进⾏初始化?。
习题一、选择题1. 面向对象程序设计的基本特征是(BCD)。
(多选)A.抽象B.封装C.继承D.多态2.下面关于类的说法正确的是(ACD)。
(多选)A.类是Java 语言中的一种复合数据类型。
B.类中包含数据变量和方法。
C.类是对所有具有一定共性的对象的抽象。
D.Java 语言的类只支持单继承。
上机指导1.设计银行项目中的注册银行用户基本信息的类,包括账户卡号、姓名、身份证号、联系电话、家庭住址。
要求是一个标准Java类(数据私有,提供seter/getter),然后提供一个toString方法打印该银行用户的信息。
答:源代码请参见“CH05_LAB\src\com\inspur\ch05\BankUser.java”2.设计银行项目中的帐户信息,包括帐户卡号、密码、存款,要求如“练习题1”。
答:源代码请参见“CH05_LAB\src\com\inspur\ch05\Account.java”3.设计银行项目中的管理员类,包括用户名和密码。
要求如“练习题1”。
答:源代码请参见“CH05_LAB\src\com\inspur\ch05\Manager.java”4.创建一个Rectangle类。
添加两个属性width、height,分别表示宽度和高度,添加计算矩形的周长和面积的方法。
测试输出一个矩形的周长和面积。
答:源代码请参见“CH05_LAB\src\com\inspur\ch05\Rectangle.java”5.猜数字游戏:一个类A有一个成员变量v,有一个初值100。
定义一个类,对A类的成员变量v进行猜。
如果大了则提示大了,小了则提示小了。
等于则提示猜测成功。
答:源代码请参见“CH05_LAB\src\com\inspur\ch05\Guess.java”6.编写一个Java程序,模拟一个简单的计算器。
定义名为Computer的类,其中两个整型数据成员num1和num1,编写构造方法,赋予num1和num2初始值,再为该类定义加、减、乘、除等公有方法,分别对两个成员变量执行加减乘除的运算。
一.程序设计题1.定义一个汽车类Car,要求如下:1)属性包括:汽车品牌brand(String类型)、颜色color(String类型)和速度speed(double类型),并且所有属性为私有。
2)至少提供一个有参的构造方法(要求品牌和颜色可以初始化为任意值,但速度的初始值必须为0)。
3)为私有属性提供访问器方法。
注意:汽车品牌一旦初始化之后不能修改。
定义测试类CarTest,在其main方法中创建一个品牌为“benz”、颜色为“black”的汽车。
public class Car{private String brand;private String color;private double speed;public Car(String brand,String color){this.brand=brand;this.color=color;}public String getColor(){return color;}public void setColor(String color){this.color=color;}public double getSpeed(){return speed;}public void setSpeed(double speed){this.speed=speed;}public String getBrand(){return brand;}}public class CarTest{public static void main(String[]args){Car c1=new Car("benz","black");}}2.定义一个图书类Book,要求如下:1)属性包括:书名name(String类型)、作者author(String类型),单价price(double类型),数量amount(int类型),并且所有属性为私有。
第五章编程题1.编写一个程序,实现字符串大小写的转换并倒序输出。
要求如下:(1)使用for循环将字符串“HelloWorld”从最后一个字符开始遍历。
(2)遍历的当前字符如果是大写字符,就使用toLowerCase()方法将其转换为小写字符,反之则使用toUpperCase()方法将其转换为大写字符。
(3)定义一个StringBuffer对象,调用append()方法依次添加遍历的字符,最后调用StringBuffer对象的toString()方法,并将得到的结果输出。
【参考答案】public class Chap5e {public static void main(String[] args) {String str="Hell5oWorld";char[] ch=str.toCharArray();StringBuffer s=new StringBuffer();for(int i=ch.length-1;i>=0;i--){if(ch[i]>='A'&&ch[i]<='Z')s.append(String.valueOf(ch[i]).toLowerCase());elseif(ch[i]>='a'&&ch[i]<='z')s.append(String.valueOf(ch[i]).toUpperCase());elses.append(String.valueOf(ch[i]));}System.out.print(s.toString());}}2. 利用Random类来产生5个20`30之间的随机整数并输出。
【参考答案】import java.util.Random;public class Chap5e {public static void main(String[] args) {Random r=new Random();for(int i=0;i<5;i++){System.out.println(r.nextInt(30-20+1)+20);}}}3. 编程. 已知字符串:”this is a test of java”.按要求执行以下操作:(1) 统计该字符串中字母s出现的次数(2) 取出子字符串”test”(3) 将本字符串复制到一个字符数组Char[] str中.(4) 将字符串中每个单词的第一个字母变成大写,输出到控制台。
第5章习题解答1.使用抽象和封装有哪些好处?答:抽象是人们解决问题的基本手段,程序设计过程中需要对问题领域进行分析、设计中得出的抽象概念,然后封装成一些类。
封装也称为信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。
系统的其他部分只有通过包裹在数据外面的被授权的操作来与这个抽象数据类型交流与交互。
也就是说,用户无需知道对象内部方法的实现细节,但可以根据对象提供的外部接口(对象名和参数)访问该对象。
把对象中相同或相似地地方抽象出来,从特殊到一半,从具体到抽象的过程,对象经过抽象得到类,类的实例化成了对象。
也可以高度抽象成接口,让不完全相同,但包含相同点的对象实现此接口,也就是利用多态实现。
把相同点抽象出来,抽象成此类或接口的方法、属性、字段等,封装就是隐藏某个对象的与其基本特性没有很大关系的所有详细信息的过程,就是将需要让其他类知道的暴露出来,不需要让其他类了解的全部隐藏起来,封装可以阻止对不需要信息的访问,我们可以使用访问指定符实现封装,也可以使用方法实现封装,可以将隐藏的信息作为参数或者属性值、字段指传给公共的接口或方法,以实现隐藏起来的信息和公开信息的交互。
封装的目的就是为了实现“高内聚,低耦合”。
高内聚就是类的内部数据操作细节自己完成,不允许外部干涉,就是这个类只完成自己的功能,不需要外部参与;低耦合,就是仅暴露很少的方法给外部使用。
2.构造方法的作用是什么?它与一般的成员方法在使用和定义方面有什么区别?答:构造方法用于生成一个对象实例,并对对象实例中的成员变量初始化。
当用new创建一个类的新的对象时,构造方法立即执行。
构造方法名字必须与类名相同。
3.Overload和Override的区别?答:方法重载(overloading)与方法覆盖(overriding)是实现多态性的基本手段,但两者的机制不同。
第五章作业PP5.1package test;import java.util.Scanner;public class test {public static void main(String[] args){int years;Scanner in =new Scanner(System.in);String y="yes";while(y=="yes"){System.out.println("请输入年份");years=in.nextInt();if((years%4==0&&years%100!=0)||(years%400==0)){System.out.println("闰年");}else{System.out.println("不是闰年");}}}}PP 5.2package test;import java.util.Scanner;public class test {public static void main(String[] args) {// TODO Auto-generated method stubScanner scan=new Scanner(System.in);System.out.println("请输入年份");int array[]=new int[5];int i=0;for( i=0;i<=4;i++) {array[i]=scan.nextInt();}for(i=0;i<=4;i++) {if(array[i]%4==0&&array[i]%100!=0||array[i]%400==0) { System.out.println(+array[i]+"是闰年");}else {System.out.println(+array[i]+"不是闰年");}}}}PP 5.3package test;import java.util.Scanner;public class test {public static void main(String[] args) {Scanner scan=new Scanner(System.in);int odd=0;int even=0;int zero=0;int a;System.out.println("请输入一个数:");a=scan.nextInt();while(a!=0){if(a%10==0) zero++;else if((a%10)%2!=0)odd++;else if((a%10)%2==0)even++;a=a/10;}System.out.println(+even+"个偶数");System.out.println(+zero+"个零");System.out.println(+odd+"个奇数");}}PP5.4package test;import java.util.Scanner;public class Test1 {public static void main(String[] args) {// TODO Auto-generated method stubScanner in = new Scanner(System.in);int number =(int) Math.random()*100+1;int a;int count = 0;do{a = in.nextInt();count++;if(a>number){System.out.println("偏大");}else if(a<number){System.out.println("偏小");}}while (a!=number);System.out.println("恭喜你猜对了,你猜了"+count+"次");}}第六章作业PP6.1import java.util.Scanner;public class oushu {public static void main(String[] args){int a,sum=0;Scanner sc=new Scanner(System.in);System.out.print("请输入一个整数:");a=sc.nextInt();//给a赋值if(a<2)//判断是否满足题目条件{System.out.println("请重新输入数字");a=sc.nextInt();}else{for(int x=2;x<=a;x+=2)//从2开始到a的值之间偶数累加{sum+=x;}}System.out.println("sum值为:"+sum);}}PP6.2import java.util.Scanner;public class zifu {public static void main(String[] args){String s1;Scanner sc=new Scanner(System.in);System.out.print("请输入一个字符串:");s1=sc.nextLine();//获取一个字符串int a=s1.length()-1;//给a赋值为字符串的长度减一,类似数组for(int x=0;x<=a;x++){System.out.println(s1.charAt(x));//隔行输出}}}PP6.3public class chengfabiao {public static void main(String[] args){int count=1;for(int i=1;i<=12;i++)//外循环for(int j=1;j<=i;j++)//内循环{System.out.print(j+"*"+i+"="+j*i+"\t");if(j%count==0)//实现换行{System.out.print("\n");count++;}}}}PP6.4import java.util.Scanner;import java.util.Scanner;public class geci {public static void main(String[] args){int a;Scanner sc=new Scanner(System.in);System.out.print("请输入一个整数(0~100):");a=sc.nextInt();//给a赋值while(a<1||a>100)//判断是否符合条件{System.out.print("请重新输入数字");a=sc.nextInt();for(int x=100;x>=a;x--)//循环输出{System.out.println(x+"bottles of beer on the wall");System.out.println(x+"bottles of beer");System.out.println("If one of those bottles should happen to fall");System.out.println(x-1+"bottles of beer on the wall");System.out.println("");}}PP6.7public class xingxing {public static void main(String[] args){final int MAX=10;for(int row=10;row>0;row--)//外循环,控制输出行数{for(int start=1;start<=row;start++)//内循环,实现每行形状System.out.print("*");System.out.println();}}}2public class xingxing2 {public static void main(String[] args){final int MAX=10;for(int row=10;row>0;row--)//外循环,控制输出行数{for(int start=1;start<=row-1;start++)//控制每行需要输出的空格数量System.out.print(" ");for(int j=10;j>=row;j--)//控制每行需要输出*的个数System.out.print("*");System.out.println();}}}3public class xingxing3 {public static void main(String[] args){final int MAX=10;for(int row=10;row>0;row--)//外循环,实现行数的控制{for(int j=10;j>row;j--)//控制每行需要输出的空格数量System.out.print(" ");for(int start=1;start<=row;start++)//控制每行需要输出*的个数System.out.print("*");System.out.println();}}}4public static void main(String[] args){int nl=5,i,j,k;for(i=0;i<nl;i++)//外循环,控制行数(完成上半部分){for(j=nl-i-1;j>0;j--)//控制每行需要输出的空格数量System.out.print(" ");for(k=i*2;k>=0;k--)//控制每行需要输出*的个数System.out.print("*");System.out.println();}for(i=5;i>0;i--)//下半部分,将上半部颠倒{for(j=nl-i;j>0;j--)System.out.print(" ");for(k=i*2-1;k>0;k--)System.out.print("*");System.out.println();}}}PP6.8public class ASC {public static void main(String[] args){int count=0;for(int x=32;x<=126;x++)//循环从32至126{System.out.print((char)x+"\t");//将int型数字转化为char型count++;if(count%5==0)//判断是否为一行五个System.out.println();}}}PP6.9import java.util.Scanner;public class yuan {public static void main(String[] args){String s1;Scanner sc=new Scanner(System.in);System.out.print("请输入一个字符串:");s1=sc.next();int ca,ce,ci,co,cu,count;ca=ce=ci=co=cu=count=0;int l=s1.length();for(int x=0;x<l;x++){switch(s1.charAt(x)){case'a':ca++;//元音字母a的计数器break;case'e':ce++;//元音字母e的计数器break;case'i':ci++;//元音字母i的计数器break;case'o':co++;//元音字母o的计数器break;case'u':cu++;//元音字母u的计数器break;default:}}count=l-ca-ce-ci-co-cu;//非元音字母的计数器System.out.println("原音字母a的个数为:"+ca);System.out.println("原音字母e的个数为:"+ce);System.out.println("原音字母i的个数为:"+ci);System.out.println("原音字母o的个数为:"+co);System.out.println("原音字母u的个数为:"+cu);System.out.println("非原音字母个数为:"+count);}}课堂作业PP1package test;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;public class CalendarBook {public static void main(String[] args) throws ParseException {CalendarBook cb = new CalendarBook();cb.printWeekTitle();cb.printCalendar(2018,10);}public void printCalendar(int year, int month) throws ParseException { String monthStr; // 格式化月份,因为要转成yyyyMMdd格式的if (month < 10) {monthStr = "0" + month;} else {monthStr = month + ""; // 数字跟字符串拼接转成字符串格式}String yearMonthStr = year + monthStr;SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");Calendar calendarEnd = Calendar.getInstance();Calendar calendarStart = Calendar.getInstance();// 根据年份和月份得到输入月份有多少天int monthDays = getMonthLastDay(year, month);// 月初的date字符串String dateStartStr = yearMonthStr + "01";// 月末的date字符串String dateEndStr = yearMonthStr + monthDays;Date startDate = sdf.parse(dateStartStr);Date endDate = sdf.parse(dateEndStr);calendarStart.setTime(startDate);calendarEnd.setTime(endDate);// 得到输入月份有多少周int weeks = calendarEnd.get(Calendar.WEEK_OF_MONTH);// 得到当月第一天是星期几,这里周日为第一天,从1开始,周一则为2int dayOfWeek = calendarStart.get(Calendar.DAY_OF_WEEK);int day = 1;// 当月的第一周做特殊处理,单独打印一行for (int i = 1; i <= 7; i++) {if (i >= dayOfWeek) {System.out.print(" " + day + " ");day++;} else {System.out.print(" ");}}System.out.println();// 开始打印从第二周开始的日期for (int week = 1; week < weeks; week++) {for (int i = 1; i <= 7; i++) {if (day > monthDays) {break;}if (day < 10) {System.out.print(" " + day + " ");} else {System.out.print(day + " ");}day++;}System.out.println();}}public int getMonthLastDay(int year, int month) {int monthDay;int[][] day = { { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }, { 0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 } };if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {// 闰年monthDay = day[1][month];} else {monthDay = day[0][month];}return monthDay;}public void printWeekTitle() {System.out.println("日" + " " + "一" + " " + "二" + " " + "三"+ " " + "四" + " " + "五" + " " + "六");}}PP2package text;import java.util.Scanner;public class text3 {public static void main(String[] args) {Scanner scan=new Scanner(System.in);int i,j,k;System.out.println("请输入第一条边长\n请输入第二条边长\n请输入第三条边长\n ");i=scan.nextInt();j=scan.nextInt();k=scan.nextInt();if(i+j>k&&i+k>j&&k+j>i){System.out.println("三条边可以构成三角形");}else {System.out.println("三条边不可以构成三角形");}}}PP3package text;import java.util.Scanner;public class text4 {public static void main(String[] args) {Scanner scan=new Scanner(System.in);int n=12;for(int i=1;i<n;i++) {for(int j=1;j<n-i;j++)System.out.print(" ");for(int k=1;k<=i;k++)System.out.print((int)Math.pow(2,(k-1)));for(int m=1;m<=i-1;m++)System.out.print(+(int)Math.pow(2,(i-1))/(int)Math.pow(2,m));System.out.println( );System.out.println( );} }}。
5-1 创建如下类:Circle类(圆形)、Square类(正方形)和Point类(点)。
Point根据(x,y)坐标定位。
Circle除了一个(x,y)坐标点之外,还有半径属性。
正方形除了一个(x,y)坐标点之外,还有边长。
请问:这些类中哪些是超类,哪些是子类?
Point类是超类,Circle类和Square类是子类。
5-2 关键字组合问题。
(1)abstract方法能否是final类型的?不行
(2)abstract方法能否是static类型的?不行
(3)能否定义一个私有静态(private static)方法?不行
5-3 简单说明方法重载与方法覆盖的区别。
方法的重载是指在一个类中,出现多个方法名相同,但参数个数或参数类型不同的方法。
方法覆盖体现了子类补充或者改变父类方法的能力,通过覆盖,可以使一个方法在不同的子类中表现出不同的行为。
5-4 列举出面向对象的三大特性。
封装、继承、多态。
JA V A程序设计练习题(一)一、单选择题1、编译Java源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为( )。
A. javaB. classC. htmlD.exe2、设x = 1 , y = 2 , z = 3,则表达式y+=z--/++x 的值是( )。
A. 3B. 3. 5C. 4D. 53、如下哪个是Java中的标识符()A、publicB、superC、3numberD、width4、如下哪个是Java中的标识符( )A、fieldnameB、thisC、3numberD、#number5、如下哪个是Java中有效的关键字()A、nameB、helloC、falseD、good6、下面的代码段执行之后count的值是什么( )int count = 1;for (int i = 1; i <= 5; i++) {count += i;}System.out.println(count);A、5B、1C、15D、167、定义一个类,必须使用的关键字是( )A、publicB、classC、interfaceD、static8、定义一个接口必须使用的关键字是()A、publicB、classC、interfaceD、static9、下面程序段执行后b的值是( )。
Integer integ =new Integer(9);boolean b = integ instanceof Object;A) 9 B) true C) 1 D) false10、关于选择结构下列哪个说法正确?()A.if语句和else语句必须成对出现B.if语句可以没有else语句对应C.switch结构中每个case语句中必须用break语句D.switch结构中必须有default语句11、while循环和do…wh ile循环的区别是:()A.没有区别,这两个结构任何情况下效果一样B.while循环比do…while循环执行效率高C.while循环是先循环后判断,所以循环体至少被执行一次D.do…while循环是先循环后判断,所以循环体至少被执行一次12、关于for循环和while循环的说法哪个正确?()A.while循环先判断后执行,for循环先执行后判断。
班级: 学号: 姓名:第五章 数组与字符串知识点一:Java 的内存分配机制内存分配:栈内存、堆内存。
栈内存:基本数据类型的变量和对象的引用变量。
超出变量的作用域,会自动释放掉为该变量所分配的内存空间。
堆内存:存放由new 运算符创建的对象和数组,在堆中分配的内存,由Java 虚拟机的自动垃圾回收器来管理。
举例:int [ ] x; x=new int[10];第一句:引用变量x ,在栈内存中分配空间第二句:数组初始化,在堆内存中分配空间栈中的变量x 的取值= 数组在堆内存中的首地址,所以栈中的这个变量就成了数组的引用变量。
举例String s1; String s2;s1=“a string ”;s2=s1;引用变量实际上保存的是数组或对象在堆内存中的地址(也称为对象的句柄),所以可以通过使用栈的引用变量来访问堆中的数组或对象。
引用变量相当于是为数组或对象起的一个别名。
引用变量是普通变量,定义时在栈中分配,在程序运行到其作用域之外被释放。
数组或对象:在堆中分配内存,在没有引用变量指向它时,也不会释放,但会变为垃圾,不能再被使用。
在随后一个不确定的时间被垃圾回收器收走(释放)。
null :引用常量,如果某个引用变量值为null ,表示不指向任何对象或数组。
知识点二:一维数组数组:相同数据类型的元素按一定顺序排列的集合,实现对这些数据的统一管理。
声明方式type var[] 或 type[] var ;type 指定数组的类型,可以是基本数据类型,也可以是一个类类型(即类名),如int a[]; int[] a1; double b[];s1 s2 10001 10001栈内存堆内存注意:Java语言中声明数组时不能指定其长度(数组中元素的个数)。
例如:int a[5]; //非法所有的数组下标从零开始A 、动态初始化数组定义与为数组元素分配空间并赋值的操作分开进行使用运算符new来为数组所要存储的数据分配内存,并将它们分配给数组变量int a[];a = new int[3];a[0] = 3;a[1] = 9;a[2] = 8;B、静态初始化在定义数组的同时为数组元素分配空间并赋值int a[] = { 3, 9, 8};MyDate dates[] = {new MyDate(22, 7, 1964),new MyDate(1, 1, 2000),new MyDate(22, 12, 1964)};C、数组元素的默认初始化数组是引用类型,它的元素相当于类的成员变量数组一经分配空间,其中的每个元素也被按照成员变量同样的方式被隐式初始化,比如在下例中,整型数组a中的元素并未显示的初始化,此时所有元素系统默认赋值为0。
public class Test {public static void main(String argv[]){int a[]= new int[5];System.out.println(a[3]);}}(1)数组元素的引用定义并用运算符new为之分配空间后,才可以引用数组中的每个元素数组元素的引用方式:arrayName[index]index为数组元素下标,可以是整型常量或整型表达式,如a[3] , b[i] , c[6*i]数组元素下标从0开始;长度为n的数组合法下标取值范围:0 ~ n-1每个数组都有一个属性length指明它的长度,例如a.length 指明数组a的长度(元素个数)知识点三:多维数组定义多维数组变量时,将每维数放在各自的方括号中,例:下面语句声明了一个名为twoD的二维数组变量int twoD[][] = new int[4][5];该语句分配一个4行5列数组并把它分配给数组twoD当给多维数组分配内存时,只需指定第一个(即最左边)维数的内存即可,可单独地对余下的维数进行内存分配(2)多维数组举例例如,int twoD[][] = new int[4][];在数组twoD被定义时给它的第一个维数分配内存,对第二维则是手工分配内存int t1[][] = new int [][4]; //非法twoD[0] = new int[5]; twoD[1] = new int[5];twoD[2] = new int[5]; twoD[3] = new int[5];(3)Java中多维数组的特殊情况不必须是规则矩阵形式int[][] tt = new int[4][];tt[0] = new int[2]; tt[1] = new int[4];tt[2] = new int[6]; tt[3] = new int[8];知识点四:字符串String类字符串:字符串是由字符组成的序列,用双引号括起来的一个字符序列构成了字符串Java的字符串常量通常是作为String类的对象存在,有专门的属性来规定它的长度。
String 类的定义和实例的生成(三种方式)String str;str=“this is a string”或者str=new String(“this is a string”);或String str1=new String(“hello”);或String str2=“aaaa”;对字符串的操作,两个字符串str1, str2str1 = str2; 指两个引用指向同一个地址str1.equals(str2); 判断两个字符串内容是否相等String aStr="HelloWorld!";String bStr="HelloWorld!";if(aStr.equals(bStr)) // 取值为真if(aStr==bStr) // 取值为真,练习题:1、若已有数组说明“char s[];”,则创建20个字符的数组的语句是。
2、在Java中定义一个字符串类型的变量str的语句是:,定义一个具有10个元素的整型数组a的语句是:。
3、下列程序的输出结果是。
public class Test{public static void main(String[] args) {int a[]={1,2,3,4};for(int i=a.length-1;i>=0;i--)System.out.print(a[i]+" ");}}4、当声明一个数组int arr[] = new int[5]; 时,这代表这个数组所保存的变量类型是,数组名是,数组的大小为,数组元素下标的使用范围是。
5、下列关于数组的定义形式,哪个是正确的?()A.int[ ]c=new char[10]; B.int[ ][3]=new int[2][ ];C.int[ ]a; a=new int; D.char b[ ]; b=new char[80];6、执行String[] s=new String[10];语句后,哪些结论是正确的?()A.s[0] 为未定义 B.s.length 为10C.s[9] 为 null D.s[10] 为 ""7、给出下面代码,关于该程序以下哪个说法是正确的?()public class Person{static int arr[] = new int[5];public static void main(String a[]){System.out.println(arr[0]); }}A、编译时将产生错误B、编译时正确,运行时将产生错误C、输出零D、输出空8、以下程序的输出结果是。
class StringTest{public static void main(String args[]) {String str1 = "JAVA";String str2 = "JAVA";String str3 = new String("JAVA");boolean result1 = str1.equals(str2);boolean result2 = str2.equals(str3);boolean result3 = str1==str2;boolean result4 = str2==str3;System.out.println(result1+","+result2+","+result3+","+result4);}}9、下列程序段执行后的结果是( )。
String s = new String("abcdefg");for (int i=0; i<s.length(); i+=2){System.out.print(s.charAt(i));}A) aceg B) ACEG C) abcdefg D) abcd10、已知如下定义:String s = "story"; 下面哪个语句不是合法的( )A、s += "books";B、s = s + 100;C、int len = s.length;D、String t = s + “abc”;11、下列数组定义及赋值,错误的是()A. int intArray[]=new int[2];B. int intArray=new int[3];intArray[1]=1;intArray[2]=2;intArray[3]=3;C. float b[]={1.2, 2.1, 3.5, 4.3, 5.6};D. int[][] a =new int[2][];a[0]=new int[4];a[1]=new int[23];12、若String s = "hello"; String t = "hello"; char c[] = {'h','e','l','l','o'} ; 则下列哪些表达式返回true?()A.s.equals(t); B.t.equals(new String("hello"));C.t.equals(c); D.s==t;13、下列关于Java语言的数组描述中,错误的是()。
A.数组的长度通常用length表示 B.数组下标从0开始C.数组元素是按顺序存放在内存的 D.数组在赋初值和赋值时都不判界。