首页 > 其他分享 >初始化顺序、==、AB交换

初始化顺序、==、AB交换

时间:2023-02-01 12:32:53浏览次数:38  
标签:初始化 AB String System Tag println out Card 顺序


初始化顺序

public class Demo01 {
public static void main(String[] args) {
Card card = new Card();
card.f();
}
}

class Tag {
Tag(int marker) {
System.out.println("Tag(" + marker + ")");
}
}

class Card {
Tag t1 = new Tag(1);

Card() {
System.out.println("Card()");
t3 = new Tag(33);
}

Tag t2 = new Tag(2);

void f() {
System.out.println("f()");
}
Tag t3 = new Tag(3);
}

在一个类里,初始化的顺序是由变量在类内的定义顺序决定的. 即使变量定义大量遍布于方法定义的中间,
那些变量仍会在调用任何方法之前得到初始化——甚至在构建器调用之前.

Tag(1)
Tag(2)
Tag(3)
Card()
Tag(33)
f()


关于==

​String str = "a" + "b" + 1;​​​的编译结果为:​​String str = "ab1";​​ 因为都是常量,所以编译器认为叠加会得到固定值,就在编译时优化的.

public class Demo02 {
public static void main(String[] args) {
test();
}


public static void test() {
String a = "a";
final String c = "a";

String b = a + "b";
String d = c + "b";
String e = getA() + "b";

String compare = "ab";

System.out.println(b == compare);
System.out.println(d == compare);
System.out.println(e == compare);
}

private static String getA() {
return "a";
}
}

// false -- a作为局部变量,其值具有不确定性
// true -- 由于final不可变,编译器直接将c赋值为"a"
// false -- 编译器不会查看getA()方法内部逻辑

交换变量

  • A
int temp = a;
a = b;
b = temp;
  • B:存在越界问题
a = a + b;
b = a - b;
a = a - b;
  • C:通过最低级的CPU位运算,效率极高,且不会越界
a = a ^ b;
b = a ^ b;
a = a ^ b;


标签:初始化,AB,String,System,Tag,println,out,Card,顺序
From: https://blog.51cto.com/u_15950249/6031351

相关文章

  • RabbitMQ初步学习
    一:什么是MQ?MQ是消息队列,主要为了解决传统消息传递上管理困难的问题。MQ有三大优点:异步、削峰、解耦异步:比如淘宝,当下了订单后,系统会走积分系统、物流系统、供货商系统......
  • CompletableFuture使用IOC容器中自定义线程池
    CompletableFuture使用IOC容器中自定义线程池创建自定义线程池,并交给ioc容器管理@ConfigurationpublicclassThreadPoolConfig{@BeanpublicExecutora......
  • BdTab全新一代的浏览器新标签页插件
    BdTab新标签页是最受欢迎的浏览器扩展程序之一,它不但能够美化你的主页,同时能有效提高生产力,非常轻松高效的管理常用网站,快速添加常用网站图标、颜色、大小、布局均可自由......
  • 【车间调度】基于候鸟和遗传算法求解柔性作业车间调度问题MBO-FJSP附matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • RabbitMQ在服务里查看显示已经成功,但无法访问web端
    参考链接:https://blog.csdn.net/weixin_42753193/article/details/128770009 网上大多数方法大致如下:1、进入安装目录cd你的RabbitMQ安装目录\sbin2、打开节点:r......
  • xv6 lab4
    RISC-VassemblyWhichregisterscontainargumentstofunctions?Forexample,whichregisterholds13inmain'scallto printf?a0-a7a2Whereisthecallto......
  • lightweight读取lable和图片
    classCocoTrainDataset(Dataset):def__init__(self,labels,images_folder,stride,sigma,paf_thickness,transform=None):super().__init__()s......
  • abstract抽象类
    1.//abstract抽象方法,只有方法名字,没有方法的实现!publicabstractvoiddoSomething();2.抽象类的所有方法,继承了他的子类,都必须要实现他的方法~除非他的子类也是抽象......
  • vue初始化项目
    1cmd指定的文件夹,然后执行vuecreate文件夹名称  上图选择第三个之后,选择如下两个,这里按空格可以进行选择,上下箭头可以切换  点击确定之后,选择对应的vue版......
  • Kafka中unclean.leader.election.enable参数的内涵
    Kafka中unclean.leader.election.enable参数的内涵官网说明:http://kafka.apache.org/documentation/#configuration参考上图,某种状态下,follower2副本落后leader副本很多,并且......