自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 Android中布局及常见属性

线性布局:将控件在布局中按线性排列,按方向可以分水平和竖直。相对布局:控件的布局位置相对于其他控件的位置来设置。帧布局:从左上角开始进行分布,逐层叠加。约束布局:在可视化视图中设置位置。绝对布局:设置绝对位置来设置。

2023-04-16 20:01:12 87

原创 JVM的类加载机制

启动类加载器(Bootstrap)//启动类加载器加载了什么public class ClassLoaderTest { public static void main(String[] args) { URL[] urls = sun.misc.Launcher.getBootstrapClassPath().getURLs(); for(URL url:urls) { System.out.println(url.toExternalForm()); } }}...

2023-04-16 17:43:20 76

原创 HashMap和HashTable的区别

HashMap1、没有synchronized修饰线程非安全2、允许key,value值为nullHashTable1、线程安全2、不允许键值对为nullHashMap的底层实现:数组+链表jdk8开始链表到8,数组长度超过64,链表转化为红黑树,元素以内部类node节点存在。...

2023-04-16 17:43:06 75

原创 HashCode与equals

HashCode:HashCode()的作用是获取哈希码,也称散列码,返回值是一个int型的整数。以 java.lang.Object来理解,JVM每new一个Object,它都会将这个Object丢到一个哈希表中去,这样的话,下次做Object的比较或者取这个对象的时候,它会依据对象的hashcode再从Hash表中取这个对象。这样做的目的是提高取对象的效率。equals...

2023-04-16 17:30:05 43

原创 Android第一行代码(2)

使用Android的日志工具LogLog.v():打印最为琐碎的、意义最小的日志信息。(verbose)Log.d():打印调试信息。(debug)Log.i():打印重要的日志信息。(info)Log.w():打印一些警告信息。(warn)Log.e():打印程序中的错误信息。(error)————————————————版权声明:本文为CSDN博主「salmon_zhang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blo

2023-04-16 17:27:14 63

原创 Android的内容提供者

提供数据,定义可以访问的数据,以及处理数据的方法的(增删改查):对ContentProvider进行处理。

2023-04-16 17:17:27 38

原创 Android中广播接收器

发出之后,同一时间只有一个广播接收器可以收到,接受顺序根据:priority(-1000,1000),priority如果相等,就看注册方式,动态>静态,也相同,就看注册时间。:内部类继承Receiver,重写onReceiver方法,通过registerReceiver注册。:在AndroidManifest.xml中通过标签声明。:发出之后,同一时间所有广播接收器都可以收到。:只在一个应用内传播。

2023-04-16 17:10:54 129

原创 Android中Handler的使用

*Looper:**便利MessageQueue中的消息,有Message就发送给Handler,使用handlerMessage进行处理。**Handler:**处理者,负责sendMessage,发送消息,handlerMessage处理消息。**Message:**线程中传递的消息,可以通过一些what字段区分不同线程。**MessageQueue:**消息队列,存储消息。

2023-04-15 21:38:29 43

原创 Android中四种启动模式

如果栈中存在要启动的活冻,那么将它之上的实例全部出栈,它到栈顶。:如果启动的活动在栈顶,就不在创建。:每启动一个活动,就创建一个实例。:启动该活动存放到在一个新栈中。

2023-04-14 23:20:35 72

原创 Android中生命周期

Activity第一次被创建的时候执行一次,通常执行初始化操作,例如加载布局,组件,绑定事件。:暂停状态,当前Acitivty启动其他活动,如弹出弹窗等,并不是完全不可见。:Activity被创建完后,有不可见变可见调用。:运行状态,位于活动栈栈顶,用户可与活动进行交互。:重新被调用,由停止变为可见状态。

2023-04-14 23:11:11 49

原创 车载开发中常见的名词

对娱乐、应用生态有需求的中控、副驾一般由Android 系统控制,而对稳定性、安全性要求较高的仪表盘,则由 QNX 系统直接控制,Android可以看做是一个运行在 QNX 上的虚拟系统,其底层技术原理就是Hypervisor。用于在不需要主机(Host)的情况下,允许网络上的单片机和仪器相互通信,在中控屏上可以随时查看、设置车门、发动机、后备箱这些模块,其实就是借助CAN bus实现的。在将Android打造为功能齐全的信息娱乐平台的过程中,我们添加了对汽车特定要求,功能和技术的支持。

2023-04-10 15:40:43 225

原创 synchronized知识总结

需要注意的是如果一个线程A调用一个实例对象的非static synchronized方法,而线程B需要调用这个实例对象所属类的静态 synchronized方法,是允许的,不会发生互斥现象,因为访问静态 synchronized 方法占用的锁是当前类的class对象,而访问非静态 synchronized 方法占用的锁是当前实例对象锁,看如下代码。类-----共享资源-----对共享资源操作的方法(加锁)-----run方法调用。------对象2------线程。------对象3------线程。

2023-04-10 15:38:32 40

原创 getInstance和new的区别

getInstance与new的区别

2022-08-23 09:32:44 526

原创 匿名内部类

匿名内部类匿名内部类:匿名内部类要不然是实现了接口,要不然是继承了抽象类作用:为啥要匿名内部类,因为有的类方法里面的参数是接口或者抽象类类型的,因为接口和抽象类本身不能创建实例化对象,所以如果没有匿名内部类,就需要对其进行继承或实现,然后再创建继承和实现后的类对象,作为方法的参数。但是如果我们有匿名内部类,只需要在参数的位置:A.Test(new B(){实现抽象方法;});就可以了。...

2021-09-15 16:43:07 135

原创 Android的三种持久化方式

1、使用文件进行存储//将要存储的数据通过String s进行存储public void save(String s){ //向文件输入字节流 FileOutputStream out = null; //写入字符的缓冲区 BufferedWriter writer = null; try { //openFileOutput方法得到FileOutputStream对象 out = openFileOutput("data", Contex

2021-07-26 16:24:20 1338

原创 数据库ACID事务

总结:要么都成功,要么都失败(1)原子性(Atomicity)原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚(2)一致性(Consistency)一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。(3)隔离性(Isolation)隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。脏读  脏读是指在一个事务处理过程里读

2021-07-26 14:07:10 81

原创 Git版本控制器(2)

Git的基本命令:初始化git项目git init克隆代码git clone url查看状态git status从本地提交到暂存区git add .从暂存区提交到仓库git commit -m

2021-07-23 17:52:49 64

原创 Git版本控制器(1)

Git:分布式版本控制器:目前世界上最先进的版本控制系统原理图:可以看到更新了哪些版本和文件每个人都持有全部的代码下载:http://npm.taobao.org/mirrors/git-for-windows/基本的Linux命令:1、上一级目录cd ..2、切换目录单级目录cd gitcode两级目录cd JMMStudy/gitcode3、显示当前目录pwd4、清屏clear5、列出当前目录下的所有文件ls6、创建文件touch 文件名7、删除文件rm

2021-07-23 17:07:06 90 1

原创 Android广播——实现强制下线功能

1、创建ActivityCollector管理所有活动public class ActivityCollector { //List集合存放Activity public static List<Activity> activities = new ArrayList<Activity>(); //添加Activity public static void addActivity(Activity activity){ activit

2021-07-23 15:11:53 557 2

原创 Android——广播

动态注册:要在程序启动之后才可以接收广播,注册写在oncreate里1、创建广播接收器:创建class,继承BroadcastReceiver,重写onReceive方法2、创建广播: IntentFilter interFilter = new IntentFilter() interFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE"); networkChangeReceiver = new NetworkChange

2021-07-23 13:03:33 172

原创 Android——Activity内容小结

1、创建Activity:(1)创建class,继承Activity,重写onCreate()(2)生成布局文件(3)在AndroidManifest.xml中注册Activity(主界面有Main,LUNCHER)2、界面跳转:(1)显式:知道要跳转的class名(通常用于项目内跳转)创建Intent对象(当前Activity,跳转到的Activity.class文件)StartActivity()(2)隐式:不知道要跳转的class名(通常用于应用之间的跳转)在AndroidManif

2021-07-22 17:51:47 184 2

原创 Android第一行代码(3)onCreate()

//onCreate的方法是在Activity创建时被系统调用,是一个Activity生命周期的开始,saveInsanceState就是保存Activity的状态的public void onCreate (Bundle savedInstanceState){ super.onCreate(savedInstanceState);//绘制布局 setContentView(R.layout.main);//显示main.xml所定义的画面 /*R.java类中

2021-07-19 17:41:01 289 2

原创 Android第一行代码(2)——使用Android的日志工具Log

Log.v():打印最为琐碎的、意义最小的日志信息。(verbose)Log.d():打印调试信息。(debug)Log.i():打印重要的日志信息。(info)Log.w():打印一些警告信息。(warn)Log.e():打印程序中的错误信息。(error)日志等级由低到高:v -> d -> i -> w -> e为什么使用Log而不使用System.outlogcat中能添加过滤器可以控制日志级别...

2021-07-19 15:37:04 80 1

原创 Android第一行代码(1)

Android第一行代码(1)- 项目层级结构.gradle和.ideaAndroid Studio自动生成的文件,无需关心app项目的代码和资源文件build包含编译时自动生成的文件gradle包含gradle wrapper的配置文件.gitgnore将指定的目录或文件排除在版本控制之外build.gradle项目全局的gradle构建脚本,一般都不需要修改gradle.properties全局的gradle配置文件,直接影响项目中所有的gra

2021-07-19 15:16:45 90

原创 JVM的类加载机制

启动类加载器(Bootstrap)//启动类加载器加载了什么public class ClassLoaderTest { public static void main(String[] args) { URL[] urls = sun.misc.Launcher.getBootstrapClassPath().getURLs(); for(URL url:urls) { System.out.println(url.toExternalForm()); } }}..

2021-07-09 21:08:12 65

原创 ArrayList和LinkedList的区别

ArrayList1、基于动态数组(如果在下标越界的时候,会新建一个数组,底层默认数组大小为10,将老数组内容存放到新数组中,扩容机制为1.5倍),连续的内存地址,适合下标访问。2、适合做查询,不适合做插入和查询。3、使用尾插法,并指定初始数组容量可提高性能。LinkedList1、基于链表,可以分散的存储在内存中。2、适合做数组插入和删除,不适合做查询。3、遍历只可以使用迭代器,和强制for,不可以使用for循环,因为每次for循环体内取得get(i)取得某一元素时都需要对l..

2021-07-09 11:14:24 44

原创 HashCode和equals

hashcode在new一个新对象的时候,java实际分为几个步骤:1、生成hashcode的值2、根据hash寻址算法找到对应的物理地址3、如果当前位置没有值,那么将对象存入4、如果有通过equals比较对象是否相同5、如果相同,不存入6、如果不同,在这里建立链表,将对象存入String a = new String(“Aa”);String b = new String(“BB”);//hashcode的值都是2112,所有会建立链表hashcode的优势:,没有ha..

2021-07-09 10:37:36 74

原创 List和Set的区别

List:有序,按对象进入的顺序保存对象,可重复,允许多个null元素对象,可以使用iterator迭代取出所有元素,也可以使用get(int index)取出指定下标的元素。List<String> list = new ArrayList<String>(); for(int i=0;i<list.size();i++) { System.out.println(list.get(i)); }for(String s : list) { S..

2021-07-08 10:57:28 110

原创 接口和抽象类的区别

抽象类可以存在普通成员函数,而接口只能存在public abstract方法抽象类中的成员变量可以是各种类型的,而接口的成员变量只能是public static final类型的抽象类只能继承一个,而接口可以实现多个接口的设计目的:是对类的一种行为约束,约束了类中应该由什么行为,也就是提供了一种机制,可以强制要求不同类具有相同的方法,但不对如何实现进行限制。抽象类设计目的:是代码的复用,当不同的类具有相同的行为的时候,且其中一部分行为实现方法一致,可以让这些类都派生自一个抽象类**(即现有子类后有.

2021-07-07 19:42:32 46

原创 重载和重写的区别

重载:发生在同一个类中,方法名必须相同,参数列表不同(类型,个数,顺序),方法返回值和访问修饰符可以不同,发生在编译时。public int add(int a,String b) {}public String add(int a,String b) {}//编译会报错重写:发生在父子类中,方法名和参数列表必须相同返回值范围可以小于等于父类抛出的异常范围也要小于等于父类访问修饰符范围要大于等于父类如果父类方法时private,final时,子类不可以重写...

2021-07-07 19:25:17 44

原创 String、StringBuffer、StringBuilder区别及使用场景

String:final关键字进行修饰,不可变,每次对字符串的改造其实都是在创建新的String对象StringBuffer:在原对象上进行操作线程安全(多线程,共享变量,结果不受影响),加了synchronized进行修饰StringBuilder:在原对象上进行操作线程不安全性能:StringBuilder>StringBuffer>String场景:经常要改变字符串内容的情况使用StringBuffer,StringBuilder。优先使用StringBuil

2021-07-07 19:14:56 175

原创 final关键字

修饰类:表示类不可以被继承修饰方法:表示方法不可以被子类重写(即不可扩展),但可以在类内重载修饰变量:表示变量一旦被赋值,就不可以更改它的值1、修饰成员变量(1)修饰类成员变量在声明时就需要被赋值,或者静态代码块赋值。(2)修饰成员变量在声明时就需要被赋值,或者代码块赋值,或者构造器赋值。2、修饰局部变量fianl修饰局部变量,不赋值不会报错,但使用前一定要赋值。public class FianlVar { //final修饰类成员变量 final static int a=0.

2021-07-07 18:59:29 45

原创 ==与equals

==:比较的是栈中的值。基本数据类型存储在栈中,引用类型变量名存储在栈中(只保存其在堆中的地址信息),实际的数据存储在堆中。所以,基本数据类型“”比较的是变量值,引用类型“”比较的是地址。equals????*如果没有重写底层默认使用的也是“==”的比较方式。**String类型已经默认重写了equals方法(就是把字符串中每个字符取出来对比一下),所以即便String是引用类型,equals比较的也是变量值。public class StringDemo { public static void

2021-07-07 17:59:52 59

原创 JDK、JRE、JVM三者区别和联系

JDK:(Java Development Kit),Java开发者工具。Java标准开发包,它提供了编译、运行Java程序所需的各种工具和资源,包括Java编译器、Java运行时环境,以及常用的Java类库等。JRE:( Java Runtime Environment) ,Java运行时环境。普通用户只需要安装JRE就可以运行Java程序。下图是JRE的安装目录:里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib和起来就称为jr

2021-07-07 17:36:38 492

原创 Java面向对象(什么是面向对象,谈谈对面向对象的理解)

面向对象和面向过程的区别面向对象更注重事件中有哪些参与者,这些参与者各自需要做什么;面向过程更注重事件发生的顺序及步骤。例子:大象放冰箱需要几步面向过程:打开冰箱门-把大象放进去-关闭冰箱门面向对象:大象:进入冰箱冰箱:开门、关门面向对象更容易复用、扩展、维护;面向过程更加直接高效。面向对象的三大特征封装:内部属性对外部调用透明,外部调用无需修改或关心内部实现。1.JavaBean属性私有,提供get/set对外访问,因为属性的获取和赋值逻辑只能由JavaBean本身决定,而不能由外

2021-07-07 17:19:46 270

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除