1、Hello, Kotlin 1.1 Kotlin的身世写了许久 Java,有没有发现其实你写了太多冗余的代码?后来你体验了一下 Python,有没有觉得不写分号的感觉真是超级爽?你虽然勤勤恳恳,可到头来却被 NullPointerException 折磨的死去活来,难道就没有受够这种日子么?直到有一天你发现自己已经写了好几十万行代码,发现居然全是 getter 和 setter!
1、变量的定义在程序运行期间,随时可能产生一些临时的数据,应用程序会将这些数据保存在一些内存单元中,每个内存单元都用一个标识符来标识。这些内存单元被称为变量,定义的标识符就是变量名,内存单元中存储的数据就是变量的值。Kotlin中的变量分为两种类型,分别是可变变量与不可变变量(只读变量),可变变量用关键字var来修饰,可以进行多次修改。不可变变量用关键字val来修饰,只能进行一次初始化。可变变量对
转载 6月前
46阅读
# Android Kotlin 如何打印堆栈 - 项目方案 在 Android 开发中,堆栈跟踪是调试过程中非常重要的一个环节。它可以帮助开发人员定位和解决应用程序中的问题。本文将探讨如何在 Android Kotlin 项目中打印堆栈信息,并提供了一份完整的项目方案,旨在提升开发者的调试能力。 ## 1. 项目背景 随着移动应用的快速发展,性能和稳定性变得至关重要。对于开发者来说,了解如
原创 9月前
141阅读
协程是轻量级的线程,他降低了线程创建,线程切换,线程初始化的性能消耗; 协程具有以下几个特点不是被操作系统内核所管理,而完全是由程序所控制;协程在线程中是顺序运行的,协程的异步和并发操作是通过协程的挂起方法来执行的,协程挂起时不会阻塞线程;这点不同于线程线程一旦挂起,该线程就会被阻塞;协程运行在线程当中,一个线程中可以创建多个协程,每一个协程可以理解为一个耗时任务协程的代码在 kotlinx.c
首先贴一下效果图思路:菜单控件分两部分,一是点击的子按钮(RecordButton),二是包裹着子按钮的容器(RecordMenu)。子按钮负责显示文字及背景颜色和点击事件,父容器主要控制子控件的位置和动画显示。实现:子按钮,先贴代码class RecordButton : RelativeLayout { /** 控件显示的文本*/ lateinit var textValue:
在Java中,如果希望一个类不被别人继承或者修改,那么可以使用 final来修饰它。可以用 public、private、protected等修饰符来描述一个类、方法或属性的可见性。Kotlin在默认修饰符的设计上采用了与Java不同的思路。Kotlin相比Java,对一个类、方法或属性有着不一样的访问控制原则。限制修饰符指定一个类、方法或属性的修改或者重写权限时,需要用到限制修饰符。继承是面向对
Kotlin 的函数定义和使用 函数声明Kotlin 中的函数使用 fun 关键字声明 fun double(x: Int): Int { }函数用法调用函数使用传统的方法val result = double(2)调用成员函数使用点表示法Sample().foo() // 创建类 Sample 实例并调用 foo中缀表示法函数还可以用中缀表示法调用,当他们是成员函数或扩展函数他们只有一个参数他们
原作者介绍,在Android上如何运用Anko和Kotlin开发数据库。 作者:Antonio Leiva时间:Mar 30, 2017原文链接:https://antonioleiva.com/databases-anko-kotlin/  事实告诉我们:在Android中编写数据库是相当无聊的。 使用SQLite时,所需
转载 9月前
53阅读
kotlin 第五天:类与对象 四泛型类型参数约束类、类型和子类型协变:保留子类型化关系逆变:反子类型化关系使用点变型使用*投影对象对象表达式对象声明单例伴生对象对象表达式和对象声明之间的语义差异委托委托实现覆盖由委托实现的接口成员委托属性标准属性委托延迟属性 Lazy可观察属性 Observable把属性储存在映射中局部委托属性(自 1.1 起)提供委托(自 1.1 起) 泛型类型参数约束可以
线程的学习与使用线程锁的应用 一、线程的简单创建 可以把要执行的方法当做参数传递给线程,还有一种就是通过Lambda表达式匿名函数去直接创建。static void Test() { ///直接把方法传递给线程 Thread thread = new Thread(Test); thread.Start(); ///匿名函数创建线
线程池的作用:     线程池作用就是限制系统中执行线程的数量。     根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果;少了浪费了系统资源,多了造成系统拥挤效率不高。用线程池控制线程数量,其他线程 排队等候。一个任务执行完毕,再从队列的中取最前面的任务开始执行。若队列中没有等待进程,线程池的这一资
转载 精选 2016-08-17 20:23:36
594阅读
使用线程池开启多个线程 protected static Logger Logger = LogMana
转载 2021-11-30 16:09:34
1004阅读
正如上篇文中所说,HashMap不是线程安全的,在被多线程共享操作时,会有问题,具体什么问题呢,一直没有个清晰的理解,今天写了个测试程序调了一下,才明白其中道理。主要是多线程同时put时,如果同时触发了rehash操作,会导致HashMap中的链表中出现循环节点,进而使得后面get的时候,会死循环。【关于什么是rehash,读者可以自行去google了】本文主要参考了:http://coolshe
转载 2024-01-16 11:17:53
42阅读
线程中断的方式Java提供了线程的中断机制:设置线程的中断标志,我们可以使用它来结束一个线程。通过设置线程的中断标志并不能直接终止该线程的执行,这种机制要求线程自己检查它是否被中断了,然后决定是不是要相应这个中断请求。线程中断相关的APIvoid interrupt():中断线程,例如线程A运行时,线程B可以调用线程A的interrupt方法来设置线程A的中断标志位true。注意:这里仅仅是设置了
# 线程与MySQL的高效使用 在现代软件开发中,尤其是在网络应用和数据库管理系统中,线程的概念扮演着至关重要的角色。线程允许程序同时执行多个操作,从而提高程序的性能和响应能力。本文将探讨如何在多线程环境中高效使用MySQL数据库,并提供代码示例和图形说明。 ## 线程与MySQL连接 在多线程环境中,每个线程与MySQL数据库的连接至关重要。使用数据库的传统方式是让每个线程独占一个数据库连
原创 7月前
27阅读
public class Test {public static void main(String[] args) {Thread t3 = new Thread(new TestRunnable(),“t-1”); //参数二设置线程名称t3.start();System.out.println("-----------------1----------------------");System.out.println("-----------------2-------------------
原创 2021-06-10 22:45:20
395阅读
在 Java 中有两类线程:User Thread(用户线程):就是应用程序里的自定义线程。Daemon Thread(守护线程):比如垃圾回收线程,就是最典型的守护线程。守
原创 2022-07-01 20:46:22
128阅读
public class Test {public static void main(String[] args) {Thread t3 = new Thread(new TestRunnable(),“t-1”); //参数二设置线程名称t3.start();System.out.println("-----------------1----------------------");System.out.println("-----------------2-------------------
原创 2021-06-10 22:46:40
130阅读
final Runnable r = new Runnable() {     public void run()      {         tv.append("Hello World");         handler.postDelayed(this, 1000);     } };  had = new ...
原创 2023-06-21 01:18:47
147阅读
开启线程,当线程创建完成后,它还是一个普通的对象,并没有被真正地执行,如果要让他成为独立的执行线程,就必须要启动它。run()方法可以作为普通的方法一样调用,但是调用run()方法后并不代表新建了执行线程。要开启一个线程,只需要调用start()方法既可以了。 public class MyRunnableTest { public static void main(String[] ar
  • 1
  • 2
  • 3
  • 4
  • 5