第三次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<stack.size();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个桃






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。 3.封装: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 4. 多态性: 多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 2、String是最基本的数据类型吗? 基本数据类型包括byte、int、char、long、float、double、boolean和short。 java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 3、int 和 Integer 有什么区别 Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类 booleanBoolean charCharacter byteByte shortShort intInteger longLong floatFloat doubleDouble 引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值