首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Kotlin基础学习之位运算

Kotlin与之略有不同,它并没有提供特殊的操作符,只提供了中缀形式的表示方法,并且Kotlin只可用在IntLong类型上,这点千万要记住 咱们来看一个例子 val a1 = 60 val b1...,然后我们再一个个的分析 12 61 49 -61 120 30 30 我们知道,Java中的Int是4个字节32位的,那么a1与b1、c1换成二进制就应该是 val a1 = 60 // 0000...a是奇数还是偶数 a1 and 1 = 0 // 偶数 a1 and 1 = 0 // 奇数 获取Int型变量的第K位(注:K从0开始依次由右往左,以下揭同) a1 shr k and 1 Int...byte数组 val bytes = ByteArray(4) bytes[0] = (a1 and 0xFF).toByte() bytes[1] = (a1 shr 8 and 0xFF).toByte...这个就牵扯到补零扩展补符号位扩展了 之前我们知道,Java是没有无符号类型的,byte是8个字节int是32个字节。在byteint的时候,肯定要将8位补到32位。

1.7K31

Kotlin热身篇: 简介与基本用法

二. kotlin java8 的相同点 kotlin java8 的相同点我总结了三个,第一个是: 它们都是面向对象函数式编程语言,第二个是: 它们都是强类型静态语言,最后一个就是它们都符合...四. kotlin java 互转 4.1 kotlin java 选中导航栏: 右键 -> Tools -> Kotlin -> Show Kotlin Bytecode -> Decompile...4.2 java kotlin 选中文件标签: 右键 -> Convert Java File To Kotlin File ? 查看 Kotlin 字节码 ? 五....里面的 final,表示一旦初始化便立即被主内存看到,不能被二次赋值 当然 kotlin 也有自动拆箱装箱 Int 翻译成 Javaint 或 Integer 以提高性能 private...}"//执行结果为“adb.length is 3” 5.5 kotlin 双冒号操作符 双冒号操作符 表示把一个方法(变量)当做一个参数,传递到另一个方法(变量)中进行使用, Java8 类似

1.6K30

Kotlin 1.2 的新增特性

这些函数是: 用于 Int Long 类型的 toBigInteger 用于 Int, Long, Float, Double, BigInteger 类型的 toBigDecimal 算术位运算符函数...这里 MODE 的值是以下之一: disable (默认值)—— 以 Kotlin 1.0 1.1 相同的方式生成字节码 enable —— 为构造函数调用生成类 Java 字节码。...这可以改变类加载初始化的顺序 preserve-class-initialization —— 为构造函数调用生成类 Java 字节码,以确保保持类初始化顺序。...在 Kotlin 1.2 中,这将会报错,因此需要使用 JVM 1.8 来编译这些代码。 破坏性变更:平台类型的 x.equals(null) 一致行为 在映射到 Java 原语 (Int!...JavaScript 后端 默认启用对类型化数组(TypedArrays)的支持 JS typed arrays 支持 Kotlin 基本数组(如 IntArray, DoubleArray)转换为JavaScript

2.8K70

Kotlin学习日志(二)数据类型

基本数据类型名称 Kotlin的数据类型 Java的数据类型 整型 Int int Integer 长整型 Long long Long 浮点型 Float float Float 双精度...1.1变量声明 接下来声明一个变量了, Java的写法如下: int i = 0; Kotlin的写法如下: var i:Int = 0 解释:上面的 var 表示后面是一个变量声明语句,后面是“变量名...1.2变量转换 Kotlin中进行数据转换Java中不同,就不一一对比了,直接说Kotlin中如何进行数据类型转换,Kotlin中都是使用类型转换函数来进行数据类型转换的,让我们来认识一下,如下表 Kotlin...二、数组 说到数组,我们首先看一下Java中的声明数组并初始化 int[] int_array = new int[] {1,2,3}; 然后是Kotlin中声明数组并初始化 var int_array...,接下来就是操作这个数组了, 2.1数组元素的操作 对于数组的操作,常见的处理包括获取数组的长度、获取指定位置的数组元素,这些操作在KotlinJava中是有区别的,如下: (1)获取数组长度,Java

3.3K20

Kotlin服务端Spring Boot系列干货教程4 - KotlinJava比较

Kotlin开发时与Java的一些不同之处一些小技巧 Kotlin编译为JVM字节码或JavaScript,像Java一样,Bytecode也是Kotlin程序的编译格式。...通过使用这种方法,一旦编译并运行虚拟机,源代码就可以在任何平台上运行 Kotlin程序可以使用所有现有的Java框架库,是的,Kotlin程序可以使用所有现有的Java框架库,甚至依赖于注释处理的高级框架也是如此...Java自动转换为Kotlin,JetBrainsIntelliJ集成了一个新功能,Java换为Kotlin,节省了大量的时间。而且它也节省了我们重新编写代码。...Kotlin用Any表示Java中的Object Kotlin没有new关键字,直接赋值即可 Kotlin把函数当参数传,js一样 Java中强制转换:(int)mHeader,Kotlin中mHeader...小技巧 如果不知道Kotlin怎么写时,可以写一个Java的,然后用Idea的Java代码Kotlin功能转换一下 Kotlin的传参写法:str: String,名字在前,类型在后 ... ----

1.1K10

Kotlin 1.2 新特性

为了缓解这种字节码处理工具的用户的这个问题,我们添加了一个命令行选项(-Xnormalize-constructor-calls=MODE),它告诉编译器为这样的结构生成更多的类Java字节码。...其中,这里的MODE有以下情况: disable (默认) - 以Kotlin 1.01.1相同的方式生成字节码; enable - 为构造函数调用生成类似Java字节码。...这可以改变类加载初始化的顺序; preserve-class-initialization -为构造函数调用生成类似Java字节码,确保保持类的初始化顺序。...x.equals(null) 调用x.equals(null)上被映射到Java原始(平台类型Int!,Boolean!,Short!, ,Long!,Float!,Double!)Char!...JavaScript TypedArrays支持 JS类型的数组支持Kotlin原始数组(例如IntArray,DoubleArray)转换为JavaScript类型的数组,这以前是可选入功能,默认情况下已启用

1.7K100

Kotlin Vocabulary | 枚举 R8 编译器

这方面的问题在 Kotlin 中显得更加有趣,因为 Kotlin 最终会编译为 Java 字节码,但是它却提供了 Java 所没有的功能。那么 Kotlin 是怎么做到的呢?这些功能有没有额外开销?...接下来的内容与 Kotlin 中枚举 (enums) when 语句 (java 中的 switch 语句) 有关。...事实上,有三个编译器参与了 Android 应用中 Kotlin 代码的编译。 1. Kotlin 编译器 Kotlin 编译器将会首先运行,它会把您写的代码转换为 Java 字节码。...D8 D8 是整个链条中的第二个编译器,它把 Java 字节码转换为 DEX 代码。到了这一步,您已经有了能够运行在 Android 中的代码。不过,您也可以选择继续使用第三个编译器 —— R8。...如果您去看这段代码编译成的 Java 字节码 (您可以通过 Android Studio 的查看字节码功能直接看到 (Tools -> Kotlin -> Show Kotlin Bytecode),然后点击

99650

Java 开发者的 Kotlin 快速上手教程(Kotlin for Java Developers)v0.1

Kotlin 概述: 开启 Kotlin 之旅 Google在2017年的IO大会上宣布,Android开发的官方语言更换为Kotlin。...在执行效率上,KotlinJava具有同样的理论速度(都是编译成JVM字节码)。...协变数组(Covariant arrays):你可以创建一个 string 类型的数组一个 object 型的数组,然后把 string 数组分配给 object 数组。...Kotlin代码不仅可以编译为JVM字节码,还可以编译为JavaScriptNative代码 Kotlin Features Lambda 表达式 数据类 (Data classes) 函数字面量内联函数...(Java数组可变;泛型的协变,逆变)// 不允许Array赋值给Array// Kotlin还有ByteArray, ShortArray, IntArray等类型fun

1.6K30

Kotlin 1.2 的新增了哪些特性?

这些函数是: 用于 Int Long 类型的 toBigInteger 用于 Int, Long, Float, Double, BigInteger 类型的 toBigDecimal 算术位运算符函数...这里 MODE 的值是以下之一: disable (默认值)—— 以 Kotlin 1.0 1.1 相同的方式生成字节码 enable —— 为构造函数调用生成类 Java 字节码。...这可以改变类加载初始化的顺序 preserve-class-initialization —— 为构造函数调用生成类 Java 字节码,以确保保持类初始化顺序。...在 Kotlin 1.2 中,这将会报错,因此需要使用 JVM 1.8 来编译这些代码。 破坏性变更:平台类型的 x.equals(null) 一致行为 在映射到 Java 原语 (Int!...JavaScript 后端 默认启用对类型化数组(TypedArrays)的支持 JS typed arrays 支持 Kotlin 基本数组(如 IntArray, DoubleArray)转换为

2.8K10

最强总结 | 带你快速搞定kotlin开发(上篇)

fun sum(a:Int, b:Int): Int = a + b 可以看到函数的声明是通过fun关键字的,函数的参数类型参数名的位置跟Java是相反的,中间使用 : 分隔,函数的返回类型是放在最后的...val可以理解为Java中的属性声明加上了final关键字(kotlin字节码反编译成Java一看就知道了),其实kotlin是更倾向于推荐使用val来声明变量,这是一种防御性的编码思维模式,目的是减少程序出错或者变的更加安全...is,可以看到kotlin有个小优化,就是p在条件成立时,不需要再强转了,直接被认为是Person的类型,进而可以使用Person的API。当你真的需要强时可以使用asas?关键字,带?...,kotlin要兼容Java,所以获取Java的classkotlin的class略有不同,kotlin的class使用::class,而在kotlin中获取Java的class可以使用::class.java...kotlin字节码反编译成Java文件就可以看出来。

53610

Java面试集合(四)

Java中关键的保留字 Java中有两个关键字目前没有用,为gotoconst,在Java中,所有的关键字为小写。 4....变量 格式: 数据类型 变量名 = 数据; int i = 2; // 变量的声明 int i; // 变量的赋值 i = 2; // 存储 bit为最小单位,8位为1字节(byte,简写为B) 数据类型...数据类型的转换 数据类型的转换: 自动类型转换 / 隐式转换 强制类型转换 / 显式转换 自动类型转换:小的类型可以自动转为大的类型 大包围小的 char可以转换为int,long可以转换为float...true,后面就不再运行 位运算 & | ^ > 右移 >>> 无符号右移 ~ 取反 &,1看作true,0看作false,0&任何数为0,1&奇数为1,1&偶数为0。...{2,3,4,5,6}; int[] arr = {2,5,7,8,9}; 数组的应用 数组名[下标] 数组名.length 遍历数组 获取数组中最值 数组的排序 反转数组 数组元素的查找 for

1.2K20

6.变量声明与基本类型(Primitive Type)

本文将会介绍 Java 的基本类型 Kotlin 的区别。我们知道,Java 的基本类型是 boolean, char, short, int, long, float, double。...但 Kotlin 没有直接使用 Javajava.lang.Integer,java.lang.Float 装箱类,而是另起山头,创造了 kotlin.Intkotlin.Float 等类,因为别人写的代码都是...但其实 Kotlin 在编译成 jvm 字节码的时候,大部分的 Int 都会编译回 int,小部分会被编译成 Integer。这个小部分,典型的情况就是你声明一个变量为可空类型时,即声明为 Int?...而我们观察 kotlin.Int 时,可以看到除了数学运算的运算符重载方法,的方法(toFloat,toLong 等)外,就没有其他方法了,而这些方法都可以直接对应基本类型运算的操作。...kotlin.Int 声明为这样一个简洁的数值封装类,让转换为 jvm 字节码的基本类型铺平道路。 所以使用 kotlin 的数值类型时,绝大部分场景下,不会有额外的性能开销。

1K30

从强 byte 说起

因为 0或正数,补码原码相同,由于 1 的前 n 位都是 0 ,与 1 相与,结果肯定是 0 ,我们只关心最后一位,奇数肯定是 1,1与1相与结果为1;若为负数,原码反码时,奇数最后一位由 1 变...只需要翻看一下Java的IO包中的各种输入输出流的读写方法,就可以发现,很多参数都是字节数组,因为字节可以说是计算机中能表示信息含义的最小单位了,尤其在网络编程中,为了不同通讯终端的数据兼容,发送接受的数据基本都是字节序列...那么,在Java中,我们怎么一个int类型,转换成byte 还能成功的还原呢?...看图就知道,装进byte数组是容易的(这里的装法也可以反序来,即byte[0]装低8位,以此类推,还原相应调整顺序,只要明白原理,都OK),主要的问题在于如何 int 拆分成单个字节放进数组。...分析下来,其实你已经发现了,还是因为符号位在捣乱:当还原前字节数组中有负数的时候,在提升为 int 补位的时候补1 就补出了问题。如何解决呢,很简单,负数本来补的 1 置为 0 。

1.6K20

Kotlin语言基础入门到熟悉:Lambda 表达式

Kotlin 当中,函数也是作为类型的一种出现的,尽管在当前的版本中,函数类型的灵活性还不如 Python 这样的语言,不过它也是可以被赋值传递的,这主要就体现在 Lambda 表达式上。...,我们已经见过 for 循环迭代数组的例子,不过我们其实有更现代化的手段来迭代一个数组,比如上面这个例子。...你看上面的这三句字节码,第一句拿到了一个类的实例,这个类一看就是一个匿名内部类: final class net/println/MainKt$main$1 implements java/lang...第二句,拿到这个类的实例以后做强——还啥,直接拿来用呗,肯定没问题呀。 那你说 SAM 转换有什么条件呢? 首先,调用者在 Kotlin 当中,被调用者是 Java 代码。...是定义在 Kotlin 中方法,那么我们是不能用 SAM 转换的。 其次,参数必须是 Java 接口,也就是说,Kotlin 接口抽象类、Java 抽象类都不可以。

42120
领券