每天一个小题目,你废了吗?

简介: 每天一个小题目,你废了吗?

周一,这种基础知识我们都应该知道!

public static void main(String[] args) {
    //1
    byte a = 127;
    byte b = 127;
    b += a;
    System.out.println(b);

    //2
    byte c = (byte)130;
    System.out.println(c);
}

问: 第一个程序有问题吗?没问题的话输出什么? 第二个程序有问题吗?没问题的话输出什么?
答:
正确结果是:-2 和 -126
这个题目要去知道计算机怎么存数据的了。说高大上点“原码、反码和补码”。说简单点,你把它想成一个圆,走到头重新走。byte的范围是-128~127,也就是当byte(127)+byte(1)时会变成byte(-128)这样会不会好理解。要真正理解的话,建议去看原码、反码和补码。

周二,配置文件的锅

application.yml

server:
  port: 10001
  
  
application.properties

server.port=10002

问: 如果你的程序里既配置了application-dev.yml又配置了application.properties。正如上面,程序起来的端口是多少?
答:
正常的情况是先加载yml,接下来加载properties文件。如果相同的配置存在于两个文件中。最后会使用properties中的配置。最后读取的优先集最高。两个配置文件中的端口号不一样会读取properties中的端口号。

周三,我以为我懂了。。。打脸打的也太快了吧

public static void main(String[] args) {

    Integer a1 = 128;
    Integer a2 = 128;
    Integer a3 = 256;
    Integer a4 = a1 + a2;

    System.out.println(a1 == a2);
    System.out.println(a4 == a3);
    System.out.println(a1 + a2 == a3);
}

问: 写出上面程序运行结果
答:
第一个false,超出了Integer的缓存范围(-128—127);第二个false,Integer在堆里创建了两个对象;第三个true,Integer在坐运算时会自动拆箱,所以a1+a2变成int类型的256,Integer在与int类型做比较时也会拆箱,所以a3也是int类型的256,两个基本数据类型用==比较,比较的是值,所以为true。

周四,每日一题,我的异步代码有问题?

主类

@EnableAsync
@SpringBootApplication
public class GzhApplication {
    public static void main(String[] args) {
        SpringApplication.run(GzhApplication.class, args);
    }
}

测试类

@SpringBootTest
class GzhApplicationTests {
    
    @Test
    void test() throws Exception {
        test1();
        test2();
        Thread.sleep(3000);
    }

    @Async
    public void test1() throws Exception {
        Thread.sleep(1000);
        System.out.print("你");
    }

    @Async
    public void test2() {
        System.out.print("吃了吗");
    }
}

问: 上面程序输出什么?为什么会这么输出?如果不知道@Async,在下面回复1,小编会告诉你。
答:
@Async是异步方法,只要在方法上面加上这个注解。就类似于new Thread
@Async要注意一下三点

  • 1.@SpringBootApplication启动类当中没有添加@EnableAsync注解。
  • 2.异步方法使用注解@Async的返回值只能为void或者Future。
  • 3.@Async注解的实现是基于Spring的AOP,而AOP的实现是基于动态代理模式实现的。不能在同一个类里使用。

周五,如果我没有被Spring包养,那怎我么才能吃它的用它的?

Test1

@Component
public class Test1 {
    
    public void test1() {
        System.out.println("test1");
    }
}

Test2

@Component
public class Test2 {

    @Autowired
    private Test1 test1;

    public void test2() {
        System.out.println("test2");
        test1.test1();
    }
}

Test3

public class Test {

    public void test() {
        //TODO
        test2.test2();
    }
}

问: 你是否遇到过一个类无法被Spring管理,但是你要用到Spring管理的Bean,你该如何操作,请补全代码,调用Test2的test2()方法。
答:
有两种,第一种是一位读者的

ApplicationContext context = SpringApplication.run(GzhApplication.class);
Test2 test2 = context.getBean(Test2.class);
test2.test2();

第二种是创建一个类实现ApplicationContextAware
然后在调用getBean获取实例具体代码:
https://gzh-zy.oss-cn-hangzhou.aliyuncs.com/javacode/SpringBeanUtils.java

周六,周六休息一下,看看你能转过来吗?

7加3在什么情况下等于8

问: 7加3在什么情况下等于8?
答:
中秋遇上国庆

相关文章
星际争霸之小霸王之小蜜蜂(十一)--杀杀杀
星际争霸之小霸王之小蜜蜂(十一)--杀杀杀
星际争霸之小霸王之小蜜蜂(十六)--狂奔的花猫
星际争霸之小霸王之小蜜蜂(十六)--狂奔的花猫
|
7月前
|
存储 Java 开发者
惊呆了!Java数据类型里竟藏着这些不为人知的秘密!
【6月更文挑战第13天】Java编程中的隐藏特性揭秘:整数类型超出范围会“回环”,如byte超过127变为-128;浮点数运算存在精度问题,如0.1+0.2不一定是0.3;char类型基于16位Unicode,可表示多种语言字符;包装类型与自动装箱拆箱简化了基本数据类型与对象间的转换。了解这些细节,助你深入理解Java数据类型。
36 3
|
Go
腥风血雨中,这招救了我的代码!
腥风血雨中,这招救了我的代码!
65 0
星际争霸之小霸王之小蜜蜂(十二)--猫有九条命
星际争霸之小霸王之小蜜蜂(十二)--猫有九条命
|
Python
一日一技:你的代码是如何被炫技毁掉的
一日一技:你的代码是如何被炫技毁掉的
121 0
|
存储 C语言 C++
谁又在乎过你呢“main()之泪伤”
目录 🐰启动函数main()🐰 🏡main的格式 🏡main的定义 🏡main()函数的返回值 🏡提示:
|
Java Go Spring
Springboot 居然可以设置动态的Banner!!(悄悄滴~)|牛气冲天新年征文
正题开始啦~ 牛年啦~ 咋们也研究下怎么给我们滴 IDEA 添加点 过年滴气氛,像这样 Spring boot 源码 之 Banner 源码看起来 <( ̄︶ ̄)↗[GO!] Springboot 启动时,会先去创建SpringApplication 对象 。 SpringApplication 构造器 指定banner的模式 Banner 函数式接口 这里有三种模式 run 方法 创建banner对象 进入上图红框中,可以看到这里如果不是 OFF 模式的话会去创建 SpringApplicationBannerPrinter 对象 可以看到该类中还定义了 图片的类型(居然还支持 gif
296 0
|
JavaScript Java API
@Value竟然能玩出这么多花样
@Value竟然能玩出这么多花样
@Value竟然能玩出这么多花样
|
数据库
厉害了!毫无悬念,又是第一!
Gartner最新数据出炉 阿里云亚太市场排名第一 全球市场排名第三 亚太全球市场份额双双上涨
2391 0
厉害了!毫无悬念,又是第一!