当前位置:   article > 正文

笔试强训day27_43 【单选】下面代码的运行结果为 public class foo( public static

43 【单选】下面代码的运行结果为 public class foo( public static void main (s

一、选择题

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

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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

命令: java f a b c
A 程序编译错误
B a b c
C 程序运行错误
D f
他的回答: C (正确)
正确答案: C
编译命令:javac源文件名称java*java -> *.class
运行命令:java主类名称要传递的参数(传递给main的args中) java fa b c args{a,b,c) [0-2]
2、若有定义语句: int a=10 ; double b=3.14 ; 则表达式 ‘A’+a+b 值的类型是()
A char
B int
C double
D float
他的回答: C (正确)
正确答案: C
3、指出下列程序运行的结果()

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';
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

A good and abc
B good and gbc
C test ok and abc
D test ok and gbc
他的回答: D (错误)
正确答案: B
4、下列说法正确的是
A 在类方法中可用this来调用本类的类方法
B 在类方法中调用本类的类方法可直接调用
C 在类方法中只能调用本类的类方法
D 在类方法中绝对不能调用实例方法
他的回答: B (正确)
正确答案: B
this表示当前对象引用,不能调用静态域。
静态方法没有对象可以直接调用。如果类方法中创建了对象,任然可以通过对象来调用实例。
5、可将语句块或方法设为同步使用的语句是()
A synchronized
B static
C abstract
D final
他的回答: A (正确)
正确答案: A
6、已知如下类说明

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();
	}
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

如下哪些使用是正确的()
A t.f = 1.0
B this.n
C Test.m
D Test.n
他的回答: B (错误)
正确答案: D
参考答案:
A选项,浮点类型的默认类型是double,A选项中是由精度低的float类型向高精度的double类型转型,因此会报错。
B选项,this指向的是对象,而static类型的变量先于对象存在,无法通过this调用。
C选项,m是实例变量,无法通过类名直接调用,需要由对象调用。
D选项,被static关键字修饰的变量直属于类,可以由类名直接调用,因此正确答案为D。
7、有以下代码:

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);
	}
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

请问输出的结果是:
A false
B true
C 报错
D 以上选项都不正确
他的回答: A (正确)
正确答案: A
8、以下哪项不属于java类加载过程?
A 生成java.lang.Class对象
B int类型对象成员变量赋予默认值
C 执行static块代码
D 类方法解析
他的回答: C (错误)
正确答案: B
参考答案:
成员变量不会被初始化,只有静态变量会被初始化,所以选B
9、如果一个方法或变量是"private"访问级别,那么它的访问范围是:
A 在当前类,或者子类中
B 在当前类或者它的父类中
C 在当前类,或者它所有的父类中
D 在当前类中
他的回答: D (正确)
正确答案: D
参考答案:
Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。
default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
public : 对所有类可见。使用对象:类、接口、变量、方法
protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。
我们可以通过以下表来说明访问权限:
在这里插入图片描述
10、java中下面哪个能创建并启动线程()

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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

A new Runnable(MyRunnable).start()
B new Thread(MyRunnable).run()
C new Thread(new MyRunnable()).start()
D new MyRunnable().start()
他的回答: D (错误)
正确答案: C
参考答案:
创建并启动线程的过程为:定义线程->实例化线程->启动线程。
定义线程有两种方式,一种是继承java.lang.Thread类,一种是实现java.lang.Runnable接口。这两种方式实例化线程区别在于,如果是继承了Thread类,直接new一个对象就可以了,如果是实现了Runnable接口的类,则需要用Thread的构造方法:

Thread(Runnable target) 
Thread(Runnable target, String name) Thread(ThreadGroup group, Runnable target) 
Thread(ThreadGroup group, Runnabletarget, String name) 
Thread(ThreadGroup group, Runnable target, String name, long stackSize)
  • 1
  • 2
  • 3
  • 4

因此A、D两个选项实例化线程存在错误。B选项中new Runnable(MyRunnable)中的MyRunnable还没有实例化,会导致编译不通过,该选项无论后面是调用run()还是start()都是错误的。

二、编程题

【不用加减乘除做加法】
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
数据范围:两个数都满足-10<=n<=1000
进阶:空间复杂度O(1) ,时间复杂度O(1).
**【解题思路】:**数字的相加可以转换为二进制的加法,注意每一位相加与进位即可

  1. 两个数异或:相当于每一位相加,而不考虑进位;
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    牛客网核心模式代码
public class Solution {
	public int Add(int num1,int num2) {
		while(num2!=0){
			int n = num1 ^ num2;//得到相加后不包含进位的数据
			int m = (num1&num2)<<1;//得到两数相加的进位
			num1 = n;//两个结果相加,直到进位为0
			num2 = m;
		}
	return num1;
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

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

示例1:
输入
1 2 3
2 2 2

输出
No
Yes

在这里插入图片描述
在这里插入图片描述
牛客网ACM模式代码

import java.util.*;
import java.math.*;
public class Main {
     public static void main(String[] args){
         Scanner sc =new Scanner(System.in);
         while(sc.hasNext()){
             BigDecimal a=sc.nextBigDecimal();
             BigDecimal b=sc.nextBigDecimal();
             BigDecimal c=sc.nextBigDecimal();
             if(a.add(c).compareTo(b)>0&&a.add(b).compareTo(c)>0&&b.add(c).compareTo(a)>0){
                 System.out.println("Yes");
             }else{
                  System.out.println("No");
             }
         }
     }       
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/339578?site
推荐阅读
相关标签
  

闽ICP备14008679号