Kotlin day01-数据类型

2024-05-08 17:08
文章标签 数据类型 day01 kotlin

本文主要是介绍Kotlin day01-数据类型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

基本数据类型

变量和常量

var 声明变量

非空类型和可空类型

数据类型转换

字符串


  • 基本数据类型

在java中,有8中基本数据类型(byte,short,int,long,float,double,boolean,char)

kotlin中的整型是引用类型,不是基本类型,相当于Java的包装类,继承于Number类,均可以调方法

整型Byte1字节 8位-128-127
Short2字节 16位-2的15次方-2的15次方-1
Int 4字节 32位-2的31次方-2的31次方-1
Long8字节 64位-2的63次方-2的63次方-1
浮点型Float4字节32位--
Double8字节64位--
字符型Char2字节16位--
布尔类型Boolean1字节8位--
  • 变量和常量

var 声明变量

    //显示声明变量,可以不用赋值,且x1不可以为nullvar x1:Int//显示声明变量,可以不用赋值,且x2可以为nullvar x2:Int?x2=null//隐式声明变量,不指定数据类型,必须赋值var y=100 var c1:Char='a'

⚠️这里需要注意:带?和不带的区别:

不带?的原理是变量声明之后,会被映射成java的基本数据类型,基本类型的话不可以为null;

带?的变量声明,会被映射出java的包装类型,因为可以为null

⚠️在java中,用==来比较两个对象的地址是否相等。在kotlin中用===来比较两个对象的地址是否相等

JVM会自动维护八种基本类型的常量池,int常量池中初始化-128~127的范围,所以当为Integer i=127时,在自动装箱过程中是取自常量池中的数值,而当Integer i=128时,128不在常量池范围内,所以在自动装箱过程中需new 128,所以地址不一样,kotlin也是这个原理。

所有上面的x1和x2不在这个范围的话,那么println(x1===x2),打印出来会是false

⚠️在java中,输出‘a’,可以这样定义,char c=97;

     在kotlin中,Char只能赋值字符,只能通过var c1:Char=‘a’,不能用整型或者整型表达式赋值,但是可以做运算

println(c1+4)会打印出‘e’
  • 非空类型和可空类型

通过?区分,例如var b:Boolean?=null和var b:Boolean,本质上是两种不同的数据类型,这里一定要注意,而且,如果是可空类型的数据,不能直接调用属性和方法,会报错

那上面的问题就不能解决吗,当然不是,kotlin要求先用if判空,在条件语句里面进行操作,如图:

或者通过安全调用的方式

或者通过Elvis方式

  • 数据类型转换

这里举几个简单的例子,写法都是一样的

x2.toFloat()
x2.toString()
x2.toDouble()
x2.toByte()
var x:Int?=str.toIntOrNull()//字符串转其他类型,这里前面必须加问号,否则无法编译
  • 字符串

kotlin中的String和Java中的String并不是一个,在kotlin中,String的方法更多

  • """""",在kotlin中允许三个引号,定义的字符串可以换行,输出的结果也是换行的

  • ${},字符串拼接
println("str4字符串的长度是:${str4.length}")
  • kotlin 中String的方法有很多,这里做个总结
方法描述
str[index]取String的指定下标的元素
 str.first() 取第一个元素
str.last()取最后一个元素
str.indexOf("")如果包含查找元素,则返回字符位置,不包含,则返回-1
str.indexLastOf("")如果包含查找元素,则返回字符串从右向左的第一个位置,不包含,返回-1
String plus(text)和“+”效果一样,字符串拼接
Boolean equals(text[,ignoreCase])第二个参数不写,相当于之前说的“==”比较内容,第二个参数为true,则忽略内容大小写就行比较
String substring(startIndex[,endIndex])如果只填必填参数,保留从start到末尾的字符,如果end填写了,则保留从start到end之间的字符串
String substringBefore()截取第一个出现的字符串前面的字符串内容
String substringAfter()截取第一个出现的字符串后面的字符串内容
String substringBeforeLast()截取最后一个出现的字符串前面面的字符串内容
String substringAfterLast()截取最后一个出现的字符串后面的字符串内容
replace()替换
replaceFirst()替换第一个出现的字符串
replaceBefore()替换第一个出现的字符串前面的内容
replaceAfter()替换第一个出现的字符串后面的内容
replaceBeforeLast()替换最后一个出现的字符串前面的内容
replaceAfterLast()替换最后一个出现的字符串后面的内容
str.spilt("")根据“”中的内容,把字符串分隔成一段一段的
Boolean isBlank()字符串是否全是空格
Boolean isEmpty()字符串长度是否为0,为0返回true
String reversed()字符串反转
String startsWith()检测字符串是否是根据特定字符串开始
String endsWith()检测字符串是否是根据特定字符串结束
String trim()清除空格
String drop(int)删除头部的几个元素并返回
String dropLast(int)删除末尾的几个元素并返回

方法很多,一时间就整理这么多吧,待续//

 

这篇关于Kotlin day01-数据类型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/970923

相关文章

JS六大数据类型

js的六大数据类型

使用不同数据类型实例化Stack泛型类的代码

package 泛型;import java.math.BigDecimal;import java.math.MathContext;public class StackDemoApp {public static void main(String[] args) {//长类型栈System.out.println("创建'Long'类型栈");//创建用于保存Long数据类型的Stack对象

【Java】Hashmap不能用基本的数据类型 Dimensions expected after this token

http://moto0421.iteye.com/blog/1143777 今天试了一下HahsMap, 采用如下形似定义 (这个下面是用了csdn的一位同仁的文章,仅作为讲解参考,请见谅) HashMap<int,String> map=new HashMap<int,String>();  map.put(1,"a");  map.put(2,"b");  map.pu

Oracle2-数据类型之to_char to_date 函数

http://www.cnblogs.com/ajian/archive/2009/03/25/1421063.html TO_DATE格式(以时间:2007-11-02   13:45:25为例)             Year:               yy two digits 两位年                显示值:07         yyy three digits

Oracle1-数据类型

char(n)  n=1 to 2000字节 定长字符串,n字节长,如果不指定长度,缺省 为1个字节长(一个汉字为2字节) varchar2(n)  n=1 to 4000字节 可变长的字符串,具体定义时指明最大长度n, 这种数据类型可以放数字、字母以及ASCII码字符集(或者EBCDIC等数据库系统接受的字符集标准)中的所有符号。 如果数据长度没有达到最大

kotlin智能类型转换

1、在kotlin这中,定义如下类型,在判断不为null的语句里边,会发生类型转换: fun main(){var a:String? = "XXX" // a 类型为 String? 可能为 null// 在if 语句中,a 的类型为 Stringif(a != null){println(a.length)}// 在下边的代码逻辑,a 的类型为 String?} 2、不支持的只能转

java数据类型相互转换工具类

package com.rest.ful.utils;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;/*** 数据类型转换工具类* @author zlzhaoe* @version [版本号, 2017年5月8日]* @see [相关类/方法]

Kotlin基础——Typeclass

高阶类型 如在Iterable新增泛型方法时 interface Iterable<T> {fun filter(p: (T) -> Boolean): Iterable<T>fun remove(p: (T) -> Boolean): Iterable<T> = filter { x -> !p(x) }} 对应的List、Set实现上述方法时仍需要返回具体的类型 interface

Java之运算符,位运算(源码反码补码)和基本数据类型

文章目录 1 java运算符1.1 各个运算符一览1.2 部分运算符说明1.3 java基本位操作1.3.1 位操作符号1.3.2 原码反码补码1.3.2.1 相关定义1.3.2.2 为何要使用原码, 反码和补码1.3.2.3 负数运算1.3.2.4 转换16进制为什么需要 &0xff 1.3.3 常用的位运算符运算1.3.3.1 左右位移 2 基本数据类型 1 java运算符