第三次JAVA基础考试总结

一,不定项选择题

3,Math的方法有哪些?

static double abs(double a)  返回 double 值的绝对值。 

static float abs(float a)  返回 float 值的绝对值。 

static int abs(int a)  返回 int 值的绝对值。

static long abs(long a)  返回 long 值的绝对值。 

static double acos(double a)  返回角的反余弦,范围在 0.0 到 pi 之间。 

static double asin(double a)  返回角的反正弦,范围在 -pi/2 到 pi/2 之间。

static double atan(double a)  返回角的反正切,范围在 -pi/2 到 pi/2 之间。 

static double atan2(double y, double x)  将矩形坐标 (x, y) 转换成极坐标 (r, theta)。 

static double cbrt(double a)  返回 double 值的立方根。 

static double ceil(double a)  返回最小的(最接近负无穷大)double 值,该值大于或等于参数,并且等于某个整数。 

static double cos(double a)  返回角的三角余弦。

static double cosh(double x)  返回 double 值的双曲线余弦。 

static double exp(double a)  返回欧拉数 e 的 double 次幂的值。

static double expm1(double x)  返回 ex -1。 

static double floor(double a)  返回最大的(最接近正无穷大)double 值,该值小于或等于参数,并且等于某个整数。

static double hypot(double x, double y)  返回 sqrt(x2 +y2),没有中间溢出或下溢。 

static double IEEEremainder(double f1, double f2)  按照 IEEE 754 标准的规定,对两个参数进行余数运算。

static double log(double a)  返回(底数是 e)double 值的自然对数。

static double log10(double a)  返回 double 值的底数为 10 的对数。

static double log1p(double x)  返回参数与 1 的和的自然对数。

static double max(double a, double b)  返回两个 double 值中较大的一个。 

static float max(float a, float b)  返回两个 float 值中较大的一个。

static int max(int a, int b)  返回两个 int 值中较大的一个。 

static long max(long a, long b)  返回两个 long 值中较大的一个。 

static double min(double a, double b)  返回两个 double 值中较小的一个。 

static float min(float a, float b)  返回两个 float 值中较小的一个。 

static int min(int a, int b)  返回两个 int 值中较小的一个。 

static long min(long a, long b)  返回两个 long 值中较小的一个。 

static double pow(double a, double b)  返回第一个参数的第二个参数次幂的值。 

static double random()  返回带正号的 double 值,大于或等于 0.0,小于 1.0。 

static double rint(double a)  返回其值最接近参数并且是整数的 double 值。

static long round(double a)  返回最接近参数的 long。 

static int round(float a)  返回最接近参数的 int。 

static double signum(double d)  返回参数的符号函数;如果参数是零,则返回零;如果参数大于零,则返回 1.0;如果参数小于零,则返回 -1.0。 

static float signum(float f)  返回参数的符号函数;如果参数是零,则返回零;如果参数大于零,则返回 1.0;如果参数小于零,则返回 -1.0。 

static double sin(double a)  返回角的三角正弦。 

static double sinh(double x)  返回 double 值的双曲线正弦。 

static double sqrt(double a)  返回正确舍入的 double 值的正平方根。 

static double tan(double a)  返回角的三角正切。 

static double tanh(double x)  返回 double 值的双曲线余弦。 

static double toDegrees(double angrad)  将用弧度测量的角转换为近似相等的用度数测量的角。 

static double toRadians(double angdeg)  将用度数测量的角转换为近似相等的用弧度测量的角。 

static double ulp(double d)  返回参数的 ulp 大小。

static float ulp(float f)  返回参数的 ulp 大小。


4,Random方法有哪些?

protected int next(int bits):生成下一个伪随机数。
boolean nextBoolean():返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的boolean值。
void nextBytes(byte[] bytes):生成随机字节并将其置于用户提供的 byte 数组中。
double nextDouble():返回下一个伪随机数,它是取自此随机数生成器序列的、在0.0和1.0之间均匀分布的 double值。
float nextFloat():返回下一个伪随机数,它是取自此随机数生成器序列的、在0.0和1.0之间均匀分布float值。
double nextGaussian():返回下一个伪随机数,它是取自此随机数生成器序列的、呈高斯(“正态”)分布的double值,其平均值是0.0标准差是1.0。
int nextInt():返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。
int nextInt(int n):返回一个伪随机数,它是取自此随机数生成器序列的、在(包括和指定值(不包括)之间均匀分布的int值。
long nextLong():返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 long 值。
void setSeed(long seed):使用单个 long 种子设置此随机数生成器的种子。

5,JAVA日期时间相关的类有?

 Date 类最基础的日期时间类,返回一个相对日期的毫秒数。

DateFormat类可以接受字符串输入 输出

 SimpleDateFormat类功能更强大的日期时间格式化类

 GregorianCalendar类提供处理日期的方法,用于计算日期

 Calender类


6,属于JAVA运行异常的异常类有?

算术异常类:ArithmeticExecption  

空指针异常类:NullPointerException  

类型强制转换异常:ClassCastException  

数组负下标异常:NegativeArrayException  

数组下标越界异常:ArrayIndexOutOfBoundsException  

违背安全原则异常:SecturityException  

文件已结束异常:EOFException  

文件未找到异常:FileNotFoundException  

字符串转换为数字异常:NumberFormatException  

操作数据库异常:SQLException  

输入输出异常:IOException  

方法未找到异常:NoSuchMethodException


二,判断题

3,List存放数据长度可变?    正确

4,文件File创建可以手动删除?    正确

6,List比数组效率高?    错误

数组是JAVA语言内置的数据类型,它是一个线性的序列,所以它可以快速的访问其他的元素。
但是速度是要有代价的,当你创建了一个数组之后,它的容量就固定了,而且在其生命周期里是不能改变的。
还有一点,JAVA里面的数组是会做边界检查的,所以当你越界访问时,会抛出RuntimeException,所以不用担心在C或C++因为不做边界检查而出现的问题了,
当然边界检查是以牺牲效率为代价的。数组与其它容器类的区别体现在三个方面:效率、类型识别和可以持有primitives。
     
JAVA里面提供的其他容器还包括List,Set和Map。他们处理对象的时候就好像这些这些对象都没有自己的类型一样,
容器将它所含的元素都看成是JAVA中所有类的根类Object类型的,这样我们只需创建一种容器,就能把所有的类型的对象全部放进去。
但是当取出的时候,那就需要我们自己进行类型转换了,不过在JAVA Tiger版里面新引入了“泛型”的概念,
结合容器类一起使用就可以解决类型转换的问题,关于“泛型”这就不详细讲解了。

从上面的角度来看,这种做法很不错,但是就是苦了primitives,如果是常量的话,可以把primitive转换成wrapper类然后放进容器里面,
如果是变量的话,那就只能放在你自己的类里了。与其他容器类相比,数组会在编译的时候作类型检查,从而防止你插入错误类型的对象,
或者在提取对象的时候把对象的类型给搞错了,JAVA在编译和运行的时候都能阻止你将一个不恰当的消息传给对象。
至于效率,数组无疑是要高于其他容器类的,因为有些容器类的实现就是基于数组的,比如ArrayList。不论从类型检查还是效率的角度来考虑,
我们首选数组来作为容器都是没错的,但是数组的缺点就是功能太弱了,所以才会有容器类的出现。
     
要多说几句的就是,java.util包里面有一个Arrays类,它包括了一组可以用于数组的static的工具方法,
其中最基本的是四个方法:用来比较两个数组是否相等的equals();用来填充数组的fill();用来对数组进行排序的sort();
以及用于在一个已经排序的数组中查找元素的binarySearch()。所有这些方法都对primitives和Object进行了重载。
此外还有一个asList()方法,它接受一个数组,然后把它转成一个List容器。JAVA标准类库还提供了一个System.arraycopy()的静态方法,
它能以较快的速度拷贝数组,对primitive和Object都进行了重载,但是注意当对Object数组进行拷贝时,进行的是浅拷贝(shallow copy)。

10,重写后的方法的访问权限不能比被重写的方法的访问权限大?    错误

重写方法的权限修饰符必须要大于或者等于被重写方法的权限修饰符


三,程序分析题

1,写出运行结果

package com.demo0404;
import java.util.Stack;
public class Demo01 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Stack stack=new Stack();
        stack.push("a");
        stack.add(1);
        stack.push("b");
        stack.add(2);
        stack.push("c");
        stack.add(3);
        for(int i=0;i             System.out.println(stack.pop());
        }
    }
}

运行后的结果为?

解:3 c 2 说先进行压栈操作,最底下为a,最上边为3,每进行一次stack.pop操作,stack.size()就会减一,而i加一,所以只会输出一半。


2,写出运行结果

package com.demo0404;
public class Demo02 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        char a=1;
        int b=1;
        int f=2;
        long g=3l;
        Integer e=3;
        Integer c=321;
        Integer d=321;
        String str="abc";
        String str3="abc";
        StringBuffer str1=new StringBuffer("abc");
        StringBuilder str2=new StringBuilder("abc");
        System.out.println(a==b);
        System.out.println(g==(a+f));
        System.out.println(c==d);
        System.out.println(e==(b+f));
        System.out.println(str.equals(str1));
        System.out.println(str1.equals(str2));
        System.out.println(str2.equals(str));
        System.out.println(str==str3);
    }
}

运行结果为:true true false true false false false true

Inter类在对象中包装了一个基本数据类型int的值。Interger类型的对象包含一个int类型的字段。

String:字符串常量,字符串长度不可变。Java中String是immutable(不可变)的。

StringBuffer:字符串变量(Synchronized,即线程安全)。如果要频繁对字符串内容进行修改,出于效率考虑最好使用StringBuffer,如果想转成String类型,可以调用StringBuffer的toString()方法。

StringBuilder:字符串变量(非线程安全)。在内部,StringBuilder对象被当作是一个包含字符序列的变长数组。


对于字符串变量来说,使用“==”和“equals()”方法比较字符串时,其比较方法不同。

“==”比较两个变量本身的值,即两个对象在内存中的首地址。

“equals()”比较字符串中所包含的内容是否相同。

参考:http://www.cnblogs.com/bluestorm/archive/2012/03/02/2377615.html


4,可以删除list内所有元素的是?

B,C会报错,而A和D。Clear方法和RemoveAll方法的区别是:Clear方法会清空所有元素,RemoveAll方法会清空满足指定条件的元素,当将条件设置为恒成立时,也会删除所有元素。使用list.clear()方法清空集合,释放内存。


5,写出程序输出结果

package com.demo0404;
public class Demo03 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        long d=(long)Math.pow(3, 1);
        long num=Math.round(Math.random()+3);
        long max=Math.max(d,num);
        if(max<10){
            max=max<<2;
            System.out.println(max);
        }else{
            max=max>>2;
            System.out.println(max);
        }
    }
}

运行结果为:12或16 因为Math。random()产生的随机数是0~1,不能等于1,所以num的值可能为3或4,再进行左移俩位便可得出结果。


四,编程题

1,任意给定一个数,分解质因数,例如90=2*3*3*5;

package com.test0327;
import java.util.Scanner;
public class Work032704 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println("请输入需要分解的数:");
      Scanner scanner=new Scanner(System.in);
      int num=scanner.nextInt();
      exp(num);
    }    
    public static void exp(int num1){
        for(int i=2;i<=num1;i++){
            while(num1%i==0){
                num1=num1/i;
                System.out.print(i+" ");
            }
        }
    }
}


3,猴子吃桃问题:猴子第一天摘了若干桃子,吃了一半又一个,第二天又吃了剩下的一半零一个,如此循环,等到第10天,发现只剩下一颗桃子,问第一天摘了多少桃子?

package com.demo0404;
public class Demo04 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int count=1;
        for(int i=2;i<=10;i++){
            count=(count+1)*2;
        }
        System.out.println("猴子第一天一共摘了"+count+"个桃");
    }
}

输出结果为:猴子第一天一共摘了1534个桃






你可能感兴趣的:(考试总结)