【Java笔试强训 27】
🎉🎉🎉点进来你就是我的人了
博主主页:🙈🙈🙈戳一戳,欢迎大佬指点!欢迎志同道合的朋友一起加油喔🤺🤺🤺
目录
一、选择题
二、编程题
🔥 不用加减乘除做加法
🔥三角形
一、选择题
1、用命令方式运行以下代码的运行结果是()
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
编译命令: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
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';
}
}
A good and abc
B good and gbc
C test ok and abc
D test ok and gbc
正确答案: B
4、下列说法正确的是
A 在类方法中可用this来调用本类的类方法
B 在类方法中调用本类的类方法可直接调用
C 在类方法中只能调用本类的类方法
D 在类方法中绝对不能调用实例方法
正确答案: B
this表示当前对象引用,不能调用静态域。
静态方法没有对象可以直接调用。如果类方法中创建了对象,任然可以通过对象来调用实例。
5、可将语句块或方法设为同步使用的语句是()
A synchronized
B static
C abstract
D final
正确答案: 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();
}
}
如下哪些使用是正确的()
A t.f = 1.0
B this.n
C Test.m
D Test.n
正确答案: 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);
}
}
请问输出的结果是:
A false
B true
C 报错
D 以上选项都不正确
正确答案: A
8、以下哪项不属于java类加载过程?
A 生成java.lang.Class对象
B int类型对象成员变量赋予默认值
C 执行static块代码
D 类方法解析
正确答案: B
参考答案:
成员变量不会被初始化,只有静态变量会被初始化,所以选B
9、如果一个方法或变量是"private"访问级别,那么它的访问范围是:
A 在当前类,或者子类中
B 在当前类或者它的父类中
C 在当前类,或者它所有的父类中
D 在当前类中
正确答案: D
参考答案:
Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。
default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
public : 对所有类可见。使用对象:类、接口、变量、方法
protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。
我们可以通过以下表来说明访问权限:
10、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
参考答案:
创建并启动线程的过程为:定义线程->实例化线程->启动线程。
定义线程有两种方式,一种是继承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)
二、编程题
🔥 不用加减乘除做加法
不用加减乘除做加法__牛客网
【解题思路】:**数字的相加可以转换为二进制的加法,注意每一位相加与进位即可
- 两个数异或:相当于每一位相加,而不考虑进位;
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;
}
}
🔥三角形
三角形__牛客网
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");
}
}
}
}