黑马程序员_基础测试题详解

----------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流!----------------------

1.编写一个函数,函数内输出一个字符串,并在主函数内调用它。

package com.itheima;
/*
 * 题目: 编写一个函数,函数内输出一个字符串,并在主函数内调用它。
 * 分析:1.首先写一个静态的    void类型的函数
 * 		 2.在主函数中调用编写的函数
 * 步骤:1.写函数static void showString(){};
 * 	 	 2.函数中输出一个字符串System.out.println("");
 * 		 3.主函数中调用 showString();
 */
public class Test1 {
	public static void main(String [] args){
		showString();							//主函数中调用 showString()方法
	}
	public static void showString(){			//定义一个输出字符串的方法
		System.out.println("abcdefg");
	}
}

2.编写程序计算1平方+2平方+3平方+....+100平方和

package com.itheima;
/*
 * 题目:编写程序计算1平方+2平方+3平方+....+100平方和
 * 分析:1.定义一个static 返回值为int类型square()的方法
 * 		 2.方法体中编写计算方法
 * 		 3.方法体中编写一个for循环
 * 		 3.主函数中调用方法
 * 步骤:1.public int square(){};
 * 		 2.for(int i=1;i<=100;i++){};
 * 		 3.主函数中调用square();
 * 
 */
public class Test2 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println(square());		//直接调用static的方法square()输出结果
	}
	public static int square(){				//定义square()方法
		int sum=0;
		int x=0;
		for(int i = 1;i <= 100;i++){
			x = i*i;
			sum += x;
		}
		return sum;							//因为方法是int类型的,这里需要一个返回值
	}
}

3.以下代码哪个是正确的?为什么?

package com.itheima;
/*
    题目: 以下代码哪个是正确的?为什么?

a. byte b = 1 + 1;     
b. byte b = 1; b = b + 1; 
c. byte b = 1; b = b += 1;    
d. byte b = 1; b = ++b; 
	答:byte b = 1+1  正确   定义byte类型的变量时,会自动将右边的数值自动完成了强转。
		
		byte b = 1; b = b+1;  编译失败,错误。这是数据类型类型转换,b是byte型,1默认是int类型的,运算
							      结果是int类型的,赋值给byte类型的b变量可能损失精度。
		
		byte b = 1; b = b+= 1; 正确。首先b+=1中+=运算符在给b赋值时,自动完成了强转动作,最后将运算后的b赋值给了b。
		
		byte b = 1; b = ++b; 正确。首先运算++b,该运算时先将b+1的结果赋值给b,在赋值的过程中自动完成了强转操作。
	  
 */
public class Test3 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

}

4.什么情况下适合用UDP协议,什么情况下适合用TCP协议?

package com.itheima;
/*
  题目:什么情况下适合用UDP协议,什么情况下适合用TCP协议?
 UDP:(生活中相当于到邮局寄东西、FeiQ、凌波、网络视频会议、桌面共享、步话机)
	1.将数据及原和目的封装成数据包中,不需要建立连接
	2.每个数据包的大小限制在64k内
	3.因无连接,是不可靠协议
	4.不需要建立连接,速度快
	总结:面向无连接、数据会被封包,包体积有限制,64k内、不可靠(因为面向无连接)、速度快。
TCP:(生活中相当于打电话、下载)
	1.建立连接,形成传输数据的通道
	2.在连接中进行大数据量传输
	3.通过三次握手完成连接,是可靠协议(用来判断对方在不在)
	4.必须建立连接,效率会稍低
 */
public class Test4 {
	public static void main(String[] args) {
		
	}

}

5.throw和throws有什么区别? try、catch、finally分别在什么情况下使用?

package com.itheima;
/*
  题目:throw和throws有什么区别? try、catch、finally分别在什么情况下使用?
  答:一。throw用于抛出一个异常类对象,通常用于处理自定义异常类情况,
 	  如 throw new MyException()
	 throws则是在方法声明时告诉调用者该方法需要抛出什么类型的异常。
	  而异常的捕获,处理交由调用该方法者去实施,如 int parselnt(String s)throws NumberFormatException。
   	  并且throw和throws的用法是完全不同的,throw是在方法体内部抛出异常,
 	  并且要与throws或者try。。。catch语句块结合使用。否则程序无法通过编译。
 	  而throws是在方法声明时抛出异常。使程序不会产生编译异常,但是要在调用方法时
 	  使用try。。。catch捕获异常进行分析处理
	  二。try、catch、finally是进行异常处理的关键字,在程序中的语句需要
	  正常执行但有可能发生异常时,用   try{需要执行的语句}catch(Exception){对异常进行处理的语句}
						     	  finally{一定会被处理的语句}
	  此方法可以友好的处理程序的异常,同时也方便了后期的排除和维护。
 */
public class Test5 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

}

6.声明类Person,包含2个成员变量:name、age。定义函数sayHello(),调用时输出:我叫***,今年***岁了。声明 类Chinese继承Person

package com.itheima;
/*
 题目:声明类Person,包含2个成员变量:name、age。定义函数sayHello(),调用时输出:我叫***,今年***岁了。声明类Chinese继承Person
分析:1.声明类Person{},并给出两个属性,以及属性的get,set方法,定义方法sayHello()
	  2.声明类Chinese继承Person
	  3.在主函数中实例化 Chinese类对象,调用sayHello()方法。
步骤:1.class Person{...}
	  2.class Chinese extends Person{}
	  3.Chinese ch=new Chinese();
 
 */
//定义Person类,并把它的name属性和age属性private,对外提供get和set方法,保证数据的安全性。
class Person{
	private String name;
	private int age;
	public String getName() {				//name属性对外提供的get方法
		return name;
	}
	public void setName(String name) {		//name属性对外提供的set方法
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	/*
	 定义成员方法sayHello(),接收用户设置的name属性和age属性,并在控制台中按
	照格式("My name is "+name+"\n"+"My age is "+age)输出。
	*/
	public void sayHello(){
		System.out.println("My name is "+name+"\n"+"My age is "+age);
	}
}
class Chinese extends Person{
	
}
public class Test6 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Chinese ch=new Chinese();
		ch.setName("Cindy");
		ch.setAge(5);
		ch.sayHello();
		
	}

}

7.编写一个可以获取文件扩展名的函数,形参接收一个文件名字符串,返回一个扩展名字符串。

package com.itheima;
/*
 题目:编写一个可以获取文件扩展名的函数,形参接收一个文件名字符串,返回一个扩展名字符串。
 分析:
 	1.定义一个静态的methodGet()的方法,形式参数是String类型的   形式参数是str
 	2.获取到文件扩展名之前的”.“的位置
 	3.查看api文档,发现有一个方法substring(int beginIndex)
 	      返回一个新的字符串,它是此字符串的一个子字符串。
 	      注意点:在程序中,索引的位置要+1
 	4.在主函数中调用methodGet()方法,并传入参数,从而输出文件扩展名。
 步骤:
 	1.public static void methodGet(String str){}
 	2.str.LastIndexOf(".");
 	3.str.substring(str.LastIndexOf(".")+1);
 	4.methodGet("Test.text.png.java");
 
 */
public class Test7 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		methodGet("Test.text.png.java");
	}
	public static void methodGet(String str){
		//System.out.println(str.lastIndexOf("."));//调试代码的,测试了一下最后一个”.“的位置
		/*
		  str.lastIndexOf(".")获取到文件扩展名之前的”.“的位置
		  str.substring(str.lastIndexOf(".")+1)从第str.lastIndexOf(".")+1位置返回一个新的字符串
		 */
		System.out.println("获取到的文件的扩展名是:"+str.substring(str.lastIndexOf(".")+1));
	}
	
}

8.用控制台程序倒着输出九九乘法表;输出结果按下图所示:


1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81


……


1*3=3 2*3=6 3*3=9


1*2=2 2*2=4


1*1=1

package com.itheima;
/*
 题目:用控制台程序倒着输出九九乘法表;输出结果按下图所示:

      1*9=9    2*9=18    3*9=27    4*9=36    5*9=45    6*9=54    7*9=63    8*9=72    9*9=81

      ……

      1*3=3   2*3=6   3*3=9

      1*2=2   2*2=4

      1*1=1
 分析:1.定义一个工具类Tool
 	  2.Tool类中定义static返回值void的打印九九乘法表的方法printMultiplicationTable(){}
 	  3.方法中定义两个for循环,用来控制行和列
 	  4.实例化Tool对象,并调用printMultiplicationTable();
 步骤:1.class Tool{}
 	  2.public static void printMultiplicationTable(){};
 	  3.for(int i=9;i<=9;i--){
 	  		for(j=1;j<=i;j++){
 	  		}
 	  }
 	  4.Tool t=new Tool();
 	   t.printMultiplicationTable();
 */
class Tool{
	public void printMultiplicationTable(){
		for(int i=9;i>=1;i--){					//控制输出的行数
			for(int j=1;j<=i;j++){				//控制输出的列数
				System.out.print(j+"*"+i+"="+j*i+"\t");
			}
			for(int z=i;z<i+1;z++){				//让变量z随着i的变化而变化,目的是保证在每一行乘法表的输出之后都能输出一个换行。
				System.out.println();
			}
		}
		
	}
}
public class Test8 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		/*
		  	用工具类Tool实例化出一个对象,并把对象的应用付给一个变量t,
			使用t.printMultiplicationTable()调用打印99乘法表的方法。在控制台打印出需要的乘法表。
		*/	
		Tool t=new Tool();
		t.printMultiplicationTable();
	}

}

9.定义一个静态方法,该方法可以接收一个List<Integer>,方法内对List进行排序

package com.itheima;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/*
      题目:定义一个静态方法,该方法可以接收一个List<Integer>,方法内对List进行排序
     分析:
     1.定义一个getList()方法,返回类型为List<Integer>。
     2.使用Arrays.asList()建立一个list
     3.使用Collections类中的sort方法对list进行升序排序
     4.使用增强的for循环遍历输出结果
     5.在主函数中调用getList();方法
     步骤:
     1.public static void getList(){}
     2.List<Integer> list = Arrays.asList(14,3,6,11,8,35,99,100,0,1);
     3.Collections.sort(list);
     4.for (Integer i:list ){输出语句}
     5.getList();
 */
public class Test9 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		getList();
	}
	 public static List<Integer> getList(){
	        List<Integer> list = Arrays.asList(14,3,6,11,8,35,99,100,0,1);//建立一个list
	        Collections.sort(list);//使用Collections类中的sort方法对list进行升序排序
	        for (Integer i:list ){
	           System.out.print(i+" ");
	        }
	        return list;
	     }
}

10.声明类Student,包含3个成员变量:name、age、score,创建5个对象装入TreeSet,按照成绩排序输出结果(考 虑成绩相同的问题)。

package com.itheima;

import java.util.Iterator;
import java.util.TreeSet;

/*
  题目:声明类Student,包含3个成员变量:name、age、score,创建5个对象装入TreeSet,按照成绩排序输出结果(考虑成绩相同的问题)。
 分析:
 	1.声明类Student,实现Comparable接口,并定义三个成员变量name、age、score
 	2.复写compareTo(){}
 	3.判断是否是学生这个类。
 	4.按照成绩对学生进行排序
 	5.使用TreeSet ts=new TreeSet();ts.add(new Student("xxx",20,87.8));创建五个对象,并将对象装入TreeSet容器。
 	6.在控制台打印出来。
 
 步骤:
 	1.class Student implements Comparable{}
 	2.public int compareTo(Object obj){}
 	3.if (!(obj instanceof Student))
 	4.if (this.score > s.score)
			return 1;
		if (this.score == s.score)
			return 0;
		return -1;
	5.TreeSet ts=new TreeSet();
	  ts.add(new Student("xxx",20,87.8));(五个)
	6.使用迭代器进行输出,并考虑成绩重复的情况。 
	
 
 */
class Student implements Comparable {
	private String name;
	private int age;
	private double score;

	public int compareTo(Object obj) {
		if (!(obj instanceof Student))
			throw new RuntimeException("不是学生类型");
		Student s = (Student) obj;
		if (this.score > s.score)
			return 1;
		if (this.score == s.score)
			return 1;
		return -1;
	}
	//构造函数,用来初始化变量
	Student(String name, int age, double score) {
		this.name = name;
		this.age = age;
		this.score = score;
	}

	public String getName() {	//name属性的get方法
		return name;
	}

	public int getAge() {		//age属性的get方法
		return age;
	}

	public double getscore() {	//score属性的get方法
		return score;
	}
}
public class Test10 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		TreeSet ts=new TreeSet();
		ts.add(new Student("xxx",20,87.8));		//往容器中添加5个对象
		ts.add(new Student("yyy",21,100));
		ts.add(new Student("zzz",18,60));
		ts.add(new Student("aaa",22,92.7));
		ts.add(new Student("bbb",14,92.7));
		Iterator it=ts.iterator();
		   while(it.hasNext())
		   {
		    Student stu=(Student)it.next();	//将其强制转换成Student类型。
		    System.out.println("姓名:  "+stu.getName()+" 年龄: "+stu.getAge()+" 成绩: "+stu.getscore());
		   }
	}

}

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------


黑马程序员训练营入学考试题 1、方法中的内部类能不能访问方法中的局部变量,为什么? 2、编写一个类,在main方法中定义一个Map对象(采用泛型),加入若干个对象,然后遍历并打印出各元素的key和value。 3、取出一个字符串中字母出现的次数。如:字符串:"abcdekka27qoq" ,输出格式为:a(2)b(1)k(2)... 4、有五个学生,每个学生有3门课(语文、数学、英语)的成绩,写一个程序接收从键盘输入学生的信息,输入格式为:name,30,30,30(姓名,三门课成绩),然后把输入的学生信息按总分从高到低的顺序写入到一个名称"stu.txt"文件中。要求:stu.txt文件的格式要比较直观,打开这个文件,就可以很清楚的看到学生的信息。 5、编写一个程序,获取10个1至20的随机数,要求随机数不能重复。 6、编写三各类Ticket、SealWindow、TicketSealCenter分别代表票信息、售票窗口、售票中心。售票中心分配一定数量的票,由若干个售票窗口进行出售,利用你所学的线程知识来模拟此售票过程。 7、写一方法,打印等长的二维数组,要求从1开始的自然数由方阵的最外圈向内螺旋方式地顺序排列。 如: n = 4 则打印: 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 ? 8、编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数,然后打印出这个十进制整数对应的二进制形式。这个程序要考虑输入的字符串不能转换成一个十进制整数的情况,并对转换失败的原因要区分出是数字太大,还是其中包含有非数字字符的情况。提示:十进制数转二进制数的方式是用这个数除以2,余数就是二进制数的最低位,接着再用得到的商作为被除数去除以2,这次得到的余数就是次低位,如此循环,直到被除数为0为止。其实,只要明白了打印出一个十进制数的每一位的方式(不断除以10,得到的余数就分别是个位,十位,百位),就很容易理解十进制数转二进制数的这种方式。 9、28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,够28人喝?假如是50人,又需要买多少瓶可乐?(需写出分析思路) 10、有100个人围成一个圈,从1开始报数,报到14的这个人就要退出。然后其他人重新开始,从1报数,到14退出。问:最后剩下的是100人中的第几个人?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值