
重学Java
文章平均质量分 71
Java,Android编程的灵魂,如果Java都玩不好,Kotlin也强不了多少。
petterp
无限进步
展开
-
关于 java 中的 set,get方法,而为什么不推荐直接使用public
我不知道有没有人遇到过,有一段时间,我都觉得那些 set,get的用处何在,我直接写一个public直接拿不就行了,多爽,但是随着使用的频繁,越来越想去搜索一下这个问题,而不是按照官方的推荐,前辈们的使用都是建议set,get. 举一个简单的例子,如果只是简单的赋值操作,直接public 和 set get并无两样,但是如果里面有一些逻辑,比如限制数据的大小,这样直接Public 就没办法控制...原创 2018-12-02 16:28:54 · 2613 阅读 · 0 评论 -
浅析 synchronized 底层实现与锁相关 | Java
引言一切的最开始都是源自为什么?为什么加了锁 synchronized 关键字,就可以实现同步?synchronized 底层到底做了什么优化?Java 中的各种锁及锁膨胀?用户态、内核态与上下文切换到底是什么鬼?什么叫自旋锁,它与 CAS 的关系?对象头是什么玩意,什么又是 MarkWord ?概述synchronizrd 是开发中解决同步问题中最常见,也是最简单的一种方法。从最开始学习并发编程,我们都知道,只要加上这个 synchronizrd 关键字,就可以很大程度上轻松解决原创 2021-06-24 20:31:51 · 313 阅读 · 0 评论 -
Java | 并发编程的那些事 - 开篇引子
引言大家好,我是一个练习时长 一年半的 Android Developer 。不知道从什么时候开始,我变得只注重新东西,开始变得浮躁,容易定不下来做一些事,对一些想要写的组件分析,却因为觉得简单,没什么可写就草草了去,反而其实自己也只是停留在 [使用阶段] ,源码也只是大概了解。往往因一些反而是看起来基础的东西,总是在被突然问起时,又通通吐吐,捉摸不定????,回答总是差强人意。慢慢的,我似乎明白了,其实是我在逃避一些我不愿意面对的 [基础] 问题,对于我来说,关于并发编程的方方面面,似乎也都能原创 2021-04-13 23:49:36 · 263 阅读 · 1 评论 -
Java | 静态代理与动态代理真的超简单
静态代理: 由我们开发者自己手动创建或者在程序运行前就已经存在的代理类,静态代理通常只代理一个类,动态代理是代理一个接口下的多个实现类。动态代理: 在程序运行时,运用java反射机制动态创建而成,静态代理事先知道要代理的是什么,而动态代理不知道要代理什么东西,只有在运行时才知道,通常动态代理实现方式是通过实现 jdk 的 InvocationHandler 接口的 invoke 方法代码实践需要代理的接口interface IBook { fun toBookName(name: Strin原创 2021-04-06 00:40:39 · 293 阅读 · 0 评论 -
Java | 关于synchronized相关理解
背景资源冲突Java本身是支持多线程的,而在多线程的情况下,为了防止 多个任务同时访问同一个资源而导致的冲突问题,所以出现了加锁机制。也就是说第一个访问某项资源的任务必须锁定这项资源,使其他任务在其被解锁之前,就无法访问它,而在其被解锁时候,另一个任务就可以锁定并使用它。所以Java提供了关键字 synchronized ,为防止资源冲突。当任务希望执行被synchronized 关键字保护的代码片段时,Java 编译器会生成代码已查看锁是否可用。如果可用,该任务获取锁,执行代码,然后释放锁。对象原创 2020-11-28 19:56:20 · 299 阅读 · 0 评论 -
Java中new与null的不同
今天在写一个android的程序时,本来想初始化一个list的集合,以避免第二次的数据添加在第一次的后面,就直接使用了对象=null,发现在给list集合添加数据后运行出现了这样的错误。翻译下来的意思是 试图在空对象引用上调用接口方法的布尔java. U.List.Advices(java. Lang.Object)” 也就是说这个list集合并没有初始化。查询资料后发现比如...原创 2018-10-11 17:20:08 · 667 阅读 · 0 评论 -
Java基础重构-面向对象
Java 是面向对象的程序设计语言,类是面向对象的重要内容,可以把了当成一种自定义类型。可以使用类来定义变量,这种类型的变量统称为引用变量。static 是一个特殊的关键字,它可用于修饰方法,成员变量等成员。static 修饰的成员表明他属于这个类本省,而不属于该类的单个实例,因为通常把 static 修饰的成员变量和 方法 也成为类变量,类方法。不使用 static 修饰的普通方法,成员变量则...原创 2019-09-08 20:12:58 · 520 阅读 · 0 评论 -
Java基础重构-数据类型
什么是强类型语言?什么是强类型语言:所有变量必须先声明,后使用指定类型的变量智能接收类型与之匹配的值。这意味着每个变量和表达式打有一个在编译时就确定的类型。类型限制了一个变量能被赋的值,限制了一个表达式可以产生的值,限制了在这些值上可以进行的操作。什么是变量?编程实际上就是对内存中数据的访问和修改,程序员需要一种机制来访问或修改内存中的数据,这种机制就是变量.每个变量都代表了...原创 2019-09-08 20:15:12 · 569 阅读 · 1 评论 -
简单讲一下 HashCode() 与 equals()方法
简单讲一下 HashCode() 与 equals()方法.hashCode()hashCode 的存在主要用于查找的快捷性,如 Hashtable, HashMap 等,hashCode 是用来在三列存储结构中确定对象的存储地址的。如果两个对象相同,就是适用于 euqals(java.lang.Object) 方法,那么这两个对象的 hashCode一定相同。如果对象的euqals ...原创 2019-04-05 15:30:20 · 656 阅读 · 0 评论 -
HashMap实现原理解析
hashMap是基于哈希表的Map 接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是他不保证顺序的恒久不变。在java 编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap 也不例外。HashMap实际上是一个 “链表散列” 的数据结构,即数组和...原创 2019-04-05 16:07:34 · 339 阅读 · 0 评论 -
Java难点重构-IO
字符和字节在java 中有输入,输出两种 IO 流,每种输入,输出又分为字节流和字符流两大类。字节又是什么呢,每个字节(byte)右8bit 组成,每种数据类型又几个字节组成。字节和字符之间的关系是怎样的呢?java 采用 unicode 编码,2个字节来表示一个字符,这点与C 语言中不同,C语言中采用 ASCII,在大多数系统中,一个字符通常占1个字节,但是在 0~127 整数之间的字符映...原创 2019-09-08 20:21:31 · 425 阅读 · 0 评论 -
Java难点重构-NIO
Java NIO 是从Java 1.4版本开始引入的一个新的 IO API,可以替代标准的 Java IO API。NIO与原来的 IO 有同样的作用和目的,但是使用的方式完全不同,NIO 支持面向 缓冲区 的,基于 通道 的IO 操作,至于什么是缓冲区,什么是通道,接下来我将会用大白话一一说明。总之,NIO 就是以更高效的方式进行文件的读写操作。在学习本篇之前,首先你要对 IO 有一定的了...原创 2019-09-08 20:19:12 · 393 阅读 · 0 评论 -
Jvm 类加载机制解析,一起来了解神秘的类加载机制吧
当程序主动使用某个类时,如果该类还违背加载到内存中,系统会通过 加载,连接,初始化,这三个步骤对类进行初始化,如果没有意外,JVM 将会连续完成这三个步骤,所以有时也称为类初始化。虽然我们并无序过分关心类加载机制,但是 基本 工作机制我们还是要知道的,这样对我们来说也能更好的去理解。先用一张思维导图来概括类加载机制。不过需要注意的是,jdk1.9对类加载器进行了改变,并废除了一些方法,本篇博客...原创 2019-03-23 10:33:53 · 434 阅读 · 2 评论 -
Java中判断某个String字符串是否包含特定字符串,并统计个数。
Java中判断某个String字符串是否包含特定字符串,并统计个数。方法1(最简单的):A 字符串 -> b字符串,统计A中b的个数。String res="AAAAABBAAA";String b="B";int count= (res.length()-res.replace(b,"").length())/b.length();原理很简单,用空格代替特定字符,然...原创 2019-07-19 22:01:59 · 24376 阅读 · 5 评论 -
java 中boolean与Boolean的区别
java 中boolean与Boolean的区别转载 2018-06-23 17:27:41 · 29438 阅读 · 3 评论 -
关于java.lang.UnsupportedOperationException的问题分析
在调用Arrays.asList()方法时把一个数组转化成List列表时,对得到的List列表进行add()和remove()操作时出现java.lang.UnsupportedOperationException异常。把数组转化为List的操作代码如下:源代码public class MyClass { public static void main(String[] arg...转载 2019-04-04 11:07:34 · 849 阅读 · 0 评论 -
java+mysql的简单登录验证及一些小功能
最近两天在学习java数据库,便写了这个示例,以后再加入界面吧。package shujukv.nn;/* * java简单数据库验证登录及小功能 */import java.sql.Statement;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;...原创 2018-07-09 21:51:03 · 1415 阅读 · 3 评论