初学Java的练手题

标签: Java新手小练习  java

每天进步一点点:刷一刷牛客网的笔试题
1、

String x = "fmn";	
x.toUpperCase();
String y = x.replace('f','F');
y = y + "wxy";
System.out.println(y);

在Java中String修饰的字符串是私有的不可变的char[]数组

private final char value[];
x.toUpperCase(); --->将 x 字符串全部转化为大写

因为是私有的所以无法改变,因为是数组所以长度不可变,final修饰的地址也不可变
虽然将 x 全部变成大写了,可根据String的不可变特性 x 值还是原来的那个值
所以 x 的值还是等于"fmn"
String y = x.replace( ‘f’ , ‘F’ );----->创建一个字符串 y 将 x 中的所有 f 转化为F
这时候 y = “Fmn”;
y = y + “wxy”; 字符串的拼接,频繁的拼接字符串建议大家还是StringBuffer或StringBuilder中的 append() 方法
这时候 y = “Fmnwxy”
所以最后的结果就是"Fmnwxy" 呢!
在这里插入图片描述
2、

class A{
	public int a;
	public int b;
	public A(int aa,int bb){
		a = aa--;
		b = a*bb;
	}
}
在主方法中写上 A x = new A(4,5);语句之后调用x.a 和 x.b 的值为什么? 

这道题考察的点是 --a 和 a-- 区别和类的属性和类中的构造方法
x = a-- // – 在后 先赋值,在自减
x = --a // – 在前 先自减,再赋值
所以 a = 4 b = 20

在这里插入图片描述
3、

public class TestThread{
	public static void main(String[] args){
	//Runnable是一个接口,所以有匿名内部类
		Runnable r = new Runnable() {
            @Override	//注解	
            public void run() {
                System.out.print("foo");
            }
        };
		//Thread 是一个Runnable的实现类
        Thread t = new Thread(r);	//让 t 对象把 r 对象包起来,就是为了可以调用start()方法
        r.run();
        System.out.print("bar");
	}
}

这里面有线程的概念
线程中重写 run() 方法 直接让线程跑起来
start() 让线程进入就绪状态 这就是启动线程
如果r调用的是start()方法就可能出现两中情况 结果为"foobar"或"barfoo"
可这是调用的是run()方法这就是按顺序执行结果为"foobar"
在这里插入图片描述

版权声明:本文为weixin_45614737原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45614737/article/details/106722059