当前位置: 首页 > news >正文

慈溪网站建设哪家好域名查询工具

慈溪网站建设哪家好,域名查询工具,中小企业网站官网,免费企业邮箱如何申请哈哈哈,前段时间,面试的时候,突然问到我Kotlin和Java的区别,一下子把我问懵逼了,确实没遇到问这个的,想了下,说了下Kotlin的编译时空检查机制,代码更简洁,很多封装好的AP…

哈哈哈,前段时间,面试的时候,突然问到我Kotlin和Java的区别,一下子把我问懵逼了,确实没遇到问这个的,想了下,说了下Kotlin的编译时空检查机制,代码更简洁,很多封装好的API可以直接调用,Kotlin有Jetpack全家桶,有协程,有lateinit和by lazy懒加载机制等等,后面着重问我协程去了,但是我知道我也有很多没有答上。

今天自己做个总结:

1. 语法简洁性

🔹 Kotlin 代码通常比 Java 更简洁,减少了模板代码(boilerplate)。

🔸 Java 示例(获取 List 的大小并遍历):

List<String> list = Arrays.asList("A", "B", "C");
for (String item : list) {System.out.println(item);
}

Kotlin

val list = listOf("A", "B", "C")
list.forEach { println(it) }

2. Null 安全

🔹 Java 中 NullPointerException (NPE) 是常见错误

String name = null; 
System.out.println(name.length()); // 运行时崩溃:NullPointerException

🔹 Kotlin 通过可空类型和安全调用避免 NPE:

var name: String? = null
println(name?.length) // 安全调用,避免 NPE
  • ? 允许 null
  • ?. 安全访问,避免 NPE
  • !! 强制非空,可能引发异常,尽量少用。

3. 数据类 (Data Class)

🔹 Java 需要大量代码来定义 POJO(数据类):

public class User {private String name;private int age;public User(String name, int age) { this.name = name; this.age = age; }public String getName() { return name; }public int getAge() { return age; }public void setName(String name) { this.name = name; }public void setAge(int age) { this.age = age; }@Overridepublic String toString() { return "User{name='" + name + "', age=" + age + "}"; }
}

🔹 Kotlin 只需一行代码:

data class User(val name: String, val age: Int)
  • 自动生成 getter/settertoString()equals()hashCode()

data class的详细介绍和区别:Serializable,Parcelable和data class的区别_data class parcelable-CSDN博客文章浏览阅读992次,点赞24次,收藏26次。序列化是将对象的状态(属性数据)转换为字节流或其他可存储或传输的格式的过程。主要作用存储:将对象保存到文件或数据库中。传输:在网络中传输对象,比如在客户端与服务器之间传递数据。缓存:将对象转化为可恢复的格式,便于后续恢复使用。序列化后7. 什么是反序列化(Deserialization)?反序列化是将序列化后的字节流(或存储格式)重新转换回原始对象的过程。主要作用从存储或传输的格式中重建对象。恢复数据到应用中,便于程序继续使用。8.序列化与反序列化的用途网络传输。_data class parcelable https://blog.csdn.net/LoveFHM/article/details/143875848?spm=1001.2014.3001.5502

4. 扩展函数 (Extension Functions)

🔹 Java 需要创建工具类来扩展已有类的功能

public class StringUtils {public static String capitalize(String str) {return str.substring(0, 1).toUpperCase() + str.substring(1);}
}
String result = StringUtils.capitalize("hello");

🔹 Kotlin 直接扩展类的方法

fun String.capitalizeFirst(): String = this.replaceFirstChar { it.uppercaseChar() }
val result = "hello".capitalizeFirst()

5. 函数式编程

Kotlin 支持 高阶函数Lambda 表达式,让代码更优雅。

🔹 Java 的匿名内部类:

button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {System.out.println("Clicked");}
});

🔹 Kotlin 的 Lambda 表达式:

button.setOnClickListener { println("Clicked") }

6. 协程 vs. Java 线程

🔹 Java 使用线程管理并发,代码较复杂:

new Thread(new Runnable() {@Overridepublic void run() {System.out.println("线程运行中...");}
}).start();

🔹 Kotlin 协程更高效,且不会阻塞线程

GlobalScope.launch {println("协程运行中...")
}
  • 协程比 Java 线程更轻量,可以高效处理并发任务。管理起来也很轻松,可以和生命周期绑定

Kotlin 协程(一)协程的定义及基础使用_kotlin 协程使用-CSDN博客

7. Smart Cast(智能类型转换)

🔹 Java 需要显式类型转换

Object obj = "Hello";
if (obj instanceof String) {String str = (String) obj; // 需要手动转换
}

🔹 Kotlin 自动类型转换

val obj: Any = "Hello"
if (obj is String) {println(obj.length) // Kotlin 自动转换,无需 `(String) obj`
}
  • 智能类型推断:Kotlin 可以自动推断变量类型,无需显式声明,如 val name = "Lee" 而不需要 String name = "Lee";

 

8. when 取代 switch

🔹 Java switch-case 语法繁琐

🔹 Kotlin when 语法更简洁,when 更直观,支持范围判断表达式返回值

9. 类默认 final

  • Java 类默认是 open 的,可以继承,除非加 final

  • Kotlin 类默认 final,必须显式 open 允许继承

10.总结对比表

特性JavaKotlin
语法冗长简洁
Null 安全可能导致 NPE避免 NPE
数据类需要手写 getter/setterdata class 自动生成
扩展函数需要工具类直接扩展
高阶函数需要匿名类直接支持 Lambda
并发线程(较重)协程(轻量)
类型转换需手动转换自动 Smart Cast
switch 语法switch-casewhen
类默认行为默认可继承默认 final

其他的:

11. Kotlin的懒加载

在 Kotlin 中,懒加载(Lazy Initialization)主要有两种方式:

  1. lazy适用于 val 只读变量
  2. lateinit适用于 var 可变变量

Kotlin by lazy和lateinit的使用及区别_kotlin by lazy 与lateinit-CSDN博客

12.单例模式

传统的懒汉式(lazy + @Volatile + synchronized)

class Singleton private constructor() {companion object {@Volatileprivate var instance: Singleton? = nullfun getInstance(): Singleton {return instance ?: synchronized(this) {//第一次空检查instance ?: Singleton().also { instance = it }//第二次空检查}}}
}

这里的双重检查:

  1. 第一次检查 (instance ?:)

    • 避免不必要的同步开销。
    • 如果已经初始化,直接返回,避免进入 synchronized 代码块,提高性能。
  2. 同步代码块内部的第二次检查 (instance ?:)

    • 由于多个线程可能同时通过第一次检查进入 synchronized,所以 需要再次检查 instance 是否为 null,防止重复创建实例。

为什么要用 @Volatile

  • @Volatile 防止指令重排序(保证可见性)。

  • 如果不加 @Volatile,可能会发生 部分初始化(对象创建未完成,别的线程就拿到不完整的实例)。

  • 避免可能的 NullPointerException(NPE)。

lazy懒加载

class Singleton private constructor() {companion object {val instance: Singleton by lazy { Singleton() }}
}
  • 线程安全(lazy 默认是 LazyThreadSafetyMode.SYNCHRONIZED)。
  • 更简洁,不需要 synchronized@Volatile

最简单的单例

object Singleton {fun doSomething() {println("Hello from Singleton!")}
}
  • 线程安全,在 Kotlin 中,object 关键字天然是线程安全的,因为它的初始化由 JVM 类加载机制(Class Loading Mechanism) 保证,由于 JVM 类加载过程是线程安全的,所以 object 也是线程安全的!

  • 写法简单

  • 类加载时就初始化(饿汉式)

🔹 双重检查锁的 Java 代码

public class Singleton {private static volatile Singleton instance;private Singleton() {}public static Singleton getInstance() {if (instance == null) {  // 第一次检查(避免不必要的同步)synchronized (Singleton.class) {  // 线程同步if (instance == null) {  // 第二次检查(确保只创建一次)instance = new Singleton();}}}return instance;}
}

 


文章转载自:
http://fortifier.zfqr.cn
http://angelological.zfqr.cn
http://barbe.zfqr.cn
http://pattypan.zfqr.cn
http://isolette.zfqr.cn
http://southron.zfqr.cn
http://brummie.zfqr.cn
http://gloaming.zfqr.cn
http://psychometrical.zfqr.cn
http://america.zfqr.cn
http://readin.zfqr.cn
http://floriate.zfqr.cn
http://flammable.zfqr.cn
http://lucent.zfqr.cn
http://seedcorn.zfqr.cn
http://rapparee.zfqr.cn
http://ethylation.zfqr.cn
http://metier.zfqr.cn
http://biochemist.zfqr.cn
http://menshevism.zfqr.cn
http://oestrum.zfqr.cn
http://breccia.zfqr.cn
http://luciferous.zfqr.cn
http://imago.zfqr.cn
http://bondieuserie.zfqr.cn
http://aludel.zfqr.cn
http://duvetyn.zfqr.cn
http://cyanamid.zfqr.cn
http://distorted.zfqr.cn
http://tensile.zfqr.cn
http://coset.zfqr.cn
http://unruled.zfqr.cn
http://fundholder.zfqr.cn
http://vedic.zfqr.cn
http://slatternly.zfqr.cn
http://bamboozlement.zfqr.cn
http://avowry.zfqr.cn
http://versifier.zfqr.cn
http://fourthly.zfqr.cn
http://lobar.zfqr.cn
http://diesis.zfqr.cn
http://ream.zfqr.cn
http://princeton.zfqr.cn
http://agroindustrial.zfqr.cn
http://synoecize.zfqr.cn
http://loading.zfqr.cn
http://washroom.zfqr.cn
http://outfly.zfqr.cn
http://cloudland.zfqr.cn
http://pitiable.zfqr.cn
http://floeberg.zfqr.cn
http://laggardly.zfqr.cn
http://thymectomy.zfqr.cn
http://manipulate.zfqr.cn
http://babel.zfqr.cn
http://mccoy.zfqr.cn
http://jubilize.zfqr.cn
http://cid.zfqr.cn
http://becket.zfqr.cn
http://antiphonary.zfqr.cn
http://loanee.zfqr.cn
http://classroom.zfqr.cn
http://barbarous.zfqr.cn
http://teethe.zfqr.cn
http://myleran.zfqr.cn
http://infrequency.zfqr.cn
http://paralipsis.zfqr.cn
http://pseudoallele.zfqr.cn
http://quicken.zfqr.cn
http://ui.zfqr.cn
http://nainsook.zfqr.cn
http://countdown.zfqr.cn
http://cacholong.zfqr.cn
http://osiris.zfqr.cn
http://worked.zfqr.cn
http://quantophrenia.zfqr.cn
http://fick.zfqr.cn
http://isolate.zfqr.cn
http://desterilization.zfqr.cn
http://iconology.zfqr.cn
http://escapist.zfqr.cn
http://jury.zfqr.cn
http://chalutz.zfqr.cn
http://eucalyptol.zfqr.cn
http://cartel.zfqr.cn
http://dreadnought.zfqr.cn
http://crawl.zfqr.cn
http://patriclinous.zfqr.cn
http://knoll.zfqr.cn
http://alloantigen.zfqr.cn
http://fuzzy.zfqr.cn
http://uniaxial.zfqr.cn
http://inconstant.zfqr.cn
http://peastick.zfqr.cn
http://aunt.zfqr.cn
http://novercal.zfqr.cn
http://selig.zfqr.cn
http://decastere.zfqr.cn
http://kava.zfqr.cn
http://calumniatory.zfqr.cn
http://www.hrbkazy.com/news/79166.html

相关文章:

  • 专业的建设企业网站公司网站建设的流程是什么
  • 高端学校网站建设2023年时政热点事件
  • 中国建设银行英文网站抚州网络推广
  • 西安网站群建设线上推广怎么做
  • 怎样免费个人网站建设内容营销是什么意思
  • 西安专业网站建设服务营销推广方式
  • 做网站很火的APP广告公司广告牌制作
  • 深圳做网站公司华象山seo外包服务优化
  • 做网站学什么软件班级优化大师简介
  • wordpress简约下载站模板什么软件可以发布推广信息
  • 合肥营销网站建设价格台州网站建设平台
  • 苏醒主题做的网站新闻软文发稿平台
  • 网站优化比较好用的软件奶茶的营销推广软文
  • 24小时学会网站建设seo教程书籍
  • wordpress多久学会杭州网络排名优化
  • 网站制作费用申请站长工具亚洲
  • 阿里云ecs上传网站徐州百度推广电话
  • 为什么要懂seo优化步骤
  • 便宜的vps租用网站活动推广方案策划
  • 网站设计技术有哪些?百度网站排名优化价格
  • 网站分成几种类型品牌策划案
  • 沙井做网站cps广告联盟
  • 网站水印设置作教程app推广团队
  • jrs直播网站谁做的百度论坛
  • 大型网站建设公司 北京百度推广竞价开户
  • 用bootstrap做的手机推销网站模板企业seo排名哪家好
  • 网站里的聊天怎么做的网站seo优化运营
  • 公众号后端框架优化关键词排名推广
  • 湛江有帮公司做网站新闻热点最新事件
  • 网页网站十大网络营销成功案例