Java面向对象编程

用命令方式运行以下代码的运行结果是()

public class f{
 public static void main(String[] args){
 String foo1 = args[1];
 String foo2 = args[2];
 String foo3 = args[3];
 }
}

命令: java f a b c

A. 程序编译错误

B. a b c

C. 程序运行错误

D. f

答案:C

若有定义语句: int a=10 ; double b=3.14 ; 则表达式 'A'+a+b 值的类型是()

A. char

B. int

C. double

D. float

答案:C

指出下列程序运行的结果()

public class Example{
 String str = new String("good");
 char[ ] ch = { 'a' , 'b' , 'c' };
 public static void main(String args[]){
 Example ex = new Example();
 ex.change(ex.str,ex.ch);
 System.out.print(ex.str + " and ");
 System.out.print(ex.ch);
}
 public void change(String str,char ch[ ]){
 str = "test ok";
 ch[0] = 'g';
}
}

A. good and abc

B. good and gbc

C. test ok and abc

D. test ok and gbc

答案:B

下列说法正确的是

A. 在类方法中可用this来调用本类的类方法

B. 在类方法中调用本类的类方法可直接调用

C. 在类方法中只能调用本类的类方法

D. 在类方法中绝对不能调用实例方法

答案:B

可将语句块或方法设为同步使用的语句是()

A. synchronized

B. static

C. abstract

D. final

答案:A

已知如下类说明:

public class Test{
 private float f=1.0f;
 int m=12;
 static int n=1;
 public static void main(String args[]){
 Test t=new Test();
 }
}

如下哪些使用是正确的()

A. t.f = 1.0

B. this.n

C. Test.m

D. Test.n

答案:D

有以下代码:

class A{
public A(String str){
}
}
public class Test{
public static void main(String[] args) {
A classa=new A("he");
A classb=new A("he");
System.out.println(classa==classb);
}
}

请问输出的结果是:

A. false

B. true

C. 报错

D. 以上选项都不正确

答案:A

以下哪项不属于java类加载过程?

A. 生成java.lang.Class对象

B. int类型对象成员变量赋予默认值

C. 执行static块代码

D. 类方法解析

答案:B

如果一个方法或变量是"private"访问级别,那么它的访问范围是:

A. 在当前类,或者子类中

B. 在当前类或者它的父类中

C. 在当前类,或者它所有的父类中

D. 在当前类中

答案:D

java中下面哪个能创建并启动线程()

public class MyRunnable implements Runnable {
 public void run() {
 //some code here
 }
}

A. new Runnable(MyRunnable).start()

B. new Thread(MyRunnable).run()

C. new Thread(new MyRunnable()).start()

D. new MyRunnable().start()

答案:C

不用加减乘除做加法
题目描述:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 
数据范围:两个数都满足-10<=n<=1000
 进阶:空间复杂度 O(1),时间复杂O(1)
 
   
public class Solution4 {

    public int Add(int num1,int num2){

        while (num2 !=0){

            int a=num1 ^num2;

            int b=(num1 & num2)<<1;

            num1=a;

            num2=b;

        }

        return num1;

    }

}
三角形
题目描述:给定三条边,请你判断一下能不能组成一个三角形。 
输入描述:输入包含多组数据,每组数据包含三个正整数a、b、c(1≤a, b, c≤10^100)。 
输出描述:对应每一组数据,如果它们能组成一个三角形,则输出“Yes”;否则,输出“No”。

 

public class Main43 {

    public static void main(String[] args) {

        Scanner scanner=new Scanner(System.in);

        while (scanner.hasNext()){

            BigDecimal a=scanner.nextBigDecimal();

            BigDecimal b=scanner.nextBigDecimal();

            BigDecimal c=scanner.nextBigDecimal();

            if (a.add(b).compareTo(c) >0 && a.add(c).compareTo(b) >0 && b.add(c).compareTo(a) >0){

                System.out.println("Yes");

            }else {

                System.out.println("No");

            }

        }

    }

}
反转部分单链表
题目描述:给定一个单链表,在链表中把第 L 个节点到第 R 个节点这一部分进行反转。
 输入描述:n 表示单链表的长度。 val 表示单链表各个节点的值。L 表示翻转区间的左端点。 R 表示翻转区间的右端点。 
输出描述:在给定的函数中返回指定链表的头指针。

 

public class Main44 {

    //首先定义单链表的节点

    static class Node{

        int val;

        Node next;

        public Node(int val){

            this.val=val;

        }

    }

    public static void main(String[] args) {

        Scanner scanner=new Scanner(System.in);

        //获取当前链表的节点个数

        int n=scanner.nextInt();

        //吃掉nextInt方法的换行符

        scanner.nextLine();

        // "1 2 3 4 5"

        String nodeValue=scanner.nextLine();

        String[] nodes=nodeValue.split(" ");

        //进行链表的创建

        Node dummyHead=new Node(-1);

        Node tail=dummyHead;

        for (int i = 0; i < n; i++) {

            //链表的尾插

            Node node=new Node(Integer.parseInt(nodes[i]));

            tail.next=node;

            tail=node;

        }

        //获取左区间和右区间的范围  "1 3"

        String part=scanner.nextLine();

        //1

        int left=Integer.parseInt(part.split(" ")[0]);

        //3

        int right=Integer.parseInt(part.split(" ")[1]);

        Node newHead=reversePartList(dummyHead.next,left,right);

        //进行输出处理

        while (newHead !=null){

            System.out.print(newHead.val+" ");

            newHead=newHead.next;

        }

    }



    public  static Node reversePartList(Node head,int left,int right){

        Node dummyHead=new Node(-1);

        dummyHead.next=head;

        Node prev=dummyHead;

        for (int i = 1; i < left; i++) {

            prev=prev.next;

        }

        //prev引用指向待反转区间的前驱节点,cur引用就是待反转区间的第一个节点

        Node cur=prev.next;

        for (int i = left; i < right; i++) {

            Node third=cur.next;

            //先把third引用从链表中删除

            cur.next=third.next;

            //再把third节点插入prev中

            third.next=prev.next;

            prev.next=third;

        }

        return dummyHead.next;

    }

}

你可能感兴趣的:(操作系统哪些事?,java要笑着学,java,开发语言,算法)