java基础
java基础面试知识
zhangjin1120
这个作者很懒,什么都没留下…
展开
-
命令行系列:windows cmd官方文档
和java开发、Android开发一样。如下图,我们可以看到经典的。原创 2023-07-14 16:03:16 · 513 阅读 · 0 评论 -
为什么JDK安装时还会提示安装jre?
一样的。原创 2023-07-12 23:04:55 · 973 阅读 · 0 评论 -
java下载sun包下的源码
sun包下的类,都是.class文件。的源码,竟然是.class。原因是JDK自带的src.zip里面,压根没有放对应的源码文件。原创 2023-06-10 02:59:55 · 1025 阅读 · 0 评论 -
对“java子类不能继承父类构造方法“的理解
父类没有默认构造器,只有有参构造器,说明父类对象生成时,必须要传递一个参数。这个参数从哪里传入了?只能是子类构造器,所以子类必须要有一个构造器,有参无参都行。构造函数名要求和类名一致,子类如果继承了父类的构造函数,那这个函数的名字和子类就不一样了。不符合构造函数的要求。父类没有默认构造器,只有有参构造器,此时子类必须添加构造器,显示调用父类构造器。原创 2023-06-08 18:07:03 · 592 阅读 · 0 评论 -
java基础中文版文档,可靠且不枯燥!
最近看Android文档,感觉写的非常好!有功能接受,特点总结,用法用例。反观java的文档,全是方法的入参和返回值介绍,非常枯燥,就没有一分像android那样的文档吗?原创 2023-06-03 22:26:22 · 496 阅读 · 0 评论 -
lambda表达式在Android开发中的实际应用
【代码】lambda表达式在Android开发中的实际应用。原创 2022-09-17 01:00:00 · 514 阅读 · 0 评论 -
Intellij Idea生成含有META-INF的jar包
命名为jar_test。新建一个java类DateUtil,可以输出当前时间对应的是星期几。....原创 2022-12-08 23:24:18 · 1528 阅读 · 0 评论 -
windows 查找jdk的安装位置
它们会自动生成环境变量,此时,在cmd中执行和javac命令,都是可以正常执行了。如下图:明明java和javac都能正常运行,为什么别的软件又打不开了?原创 2022-12-11 23:00:00 · 1018 阅读 · 0 评论 -
Intellij Idea新建module
作者已经写的很清晰了,就直接转载了,有删减。在IDEA中新建了一个工程后,要在该工程下新建一个模块,需要按如下进行新建。原创 2022-12-08 22:12:01 · 444 阅读 · 0 评论 -
win10 安装JDK1.8
为什么要安装jdk?idea不能查看JDK源代码。一、安装jdk历史版本下载地址,下载jdk windows版本,需要oracle账号(2009.4.20 oracle收购sun)。oracle账号:807150172@qq.com 密码:Zhangjin16(Z大写)jdk 8u221官网下载地址,网速还可以,每秒1.5M左右。jdk安装包200M左右。避免麻烦,可以用pandownload从自己百度网盘上下载。直接从自己微云下载(账号是QQ号和qq密码),每秒0.1M左右从坚果云原创 2021-11-12 23:00:00 · 808 阅读 · 0 评论 -
Intelij idea 2017.3 社区版(Community)下载安装使用
java基础开发,用Intelij Idea的免费的社区版,可以省去破解的步骤。2017.3.7版本,共同进步-》各种安装包。原创 2021-08-05 10:03:00 · 453 阅读 · 0 评论 -
Android Studio如何新建java基础项目?
为什么要新建java基础项目?Android 软件开发最开始是用java语言开发的,有些不常用,但是面试又会问道的java基础忘记了,想写个java Demo测验一下。单纯为一个demo去下载Intelij idea耗费时间。所以要是能直接用Android studio新建java项目就好了。直接 psvm新建main()方法,再运行,不行吗?也可以,不过每次运行都会触发gragle变异,运行速度比较慢。而且写完代码,一般都会删除,不会保留。Android studio 4.0.2版.原创 2021-03-17 09:38:56 · 417 阅读 · 0 评论 -
从openJDK官网下载Hotspot 源码
讲了下载java8对于的JVM源码,jvm源码中只有.h的头文件,并没有.cpp的具体实现文件。还需要下载hotspot源码。4.选择hotspot,点击进入新界面。选择browse,点击进入新界面。原创 2022-09-05 03:00:00 · 2368 阅读 · 1 评论 -
用CLion2022查看java native方法源代码
每一个包含native方法的java 类,都有一个对应的.c文件。例如Object.java中,包含native clone()方法,也就对应着一个Object.c文件。,讲了在线查看java native方法,在线查看相比本地查看,跳转速度慢,UI也不美观。我们试下用CLion直接查看java native方法。一共有3个大的步骤,点进去查看具体步骤就好了。原创 2022-09-04 06:00:00 · 600 阅读 · 0 评论 -
下载JDK8 JVM源码
选择zip,开始下载。下载速度不快不慢,我的是180K/s上下变动。里面有没有Object.c文件,当然是有的!选择browse,点击进入新界面。下载完成,有83.9MB。选择jdk8,点击进入新界面。选择jdk,点击进入新界面。原创 2022-09-04 05:45:00 · 2042 阅读 · 1 评论 -
java各种运算符
目录& (按位与)>> (右移运算符)~ (取反运算符)& (按位与)&按位与的运算规则,是将两边的数转换为二进制位,(两个为真才为真)。1&1=1 , 1&0=0 , 0&1=0 , 0&0=0测试一下public class OperatorTest { public static void main(String[] args) { int i1 = 3 & 5; Syst原创 2022-04-25 10:45:36 · 693 阅读 · 0 评论 -
java带标签的continue、break
ViewBinding会自动生成一个Binding类。我的项目中,有个ActivityMainBinding类,源码中有如下代码: @NonNull public static ActivityMainBinding bind(@NonNull View rootView) { // The body of this method is generated in a way you would not otherwise write. // This is done to optim原创 2021-12-27 18:13:11 · 323 阅读 · 0 评论 -
java int数组转ArrayList<Integer>
JDK中的方法int[] tickets = new int[]{84,49,5,24,70,77,87,8};ArrayList<Integer> list = (ArrayList<Integer>)Arrays.stream(tickets).boxed().collect(Collectors.toList());循环插入 int[] tickets = new int[]{84,49,5,24,70,77,87,8}; ArrayList<原创 2021-11-14 19:38:47 · 710 阅读 · 0 评论 -
byte的范围为何是-128~127,而不是-127~128?
一、计算机该怎么做减法? 比如2-1=1,1-1=0.由于种种原因(精力有限,暂不深究),加法电路难度和成本已经很高了,当时的条件下,再去设计一个减法电路,费力又费钱,前辈们想用加法电路来解决减法运算问题。思路如下,熟悉的可以跳过。 假设当前时针指向8点,而准确时间是5点,调整时间可有以下两种拨法: 一是倒拨3小时:8-3=5 二是顺拨9小时:8+9=...原创 2018-07-29 20:26:36 · 10550 阅读 · 15 评论 -
java反射获取父类的默认属性
除了私有属性不可访问,默认、protected、public都可以访问。如下图,priName是父类的私有属性,子类对象s就不能访问priName,但是可以访问默认属性name。在HashMap中,Node的内部属性都是默认的。HashMap和LinkedHashMap又在同一个包java.util.*下面,所以LinkedHashMap.Entry可以访问到HashMap.Node。LinkedHashMap.Entry继承自HashMap.Node,其内部属性都是默认的。HashMap.T原创 2021-11-13 16:57:56 · 517 阅读 · 0 评论 -
Socket为什么翻译成套接字?
Socket为什么要翻译成套接字?原创 2021-10-24 00:44:24 · 210 阅读 · 0 评论 -
@Retention注解的作用
Java中java/lang/annotation/Retention.java源代码:@Documented@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.ANNOTATION_TYPE)public @interface Retention { RetentionPolicy value();}Retention的中文意思是:保留,记忆力。更具体的分析见:@Retention注解作用...原创 2021-10-10 17:16:33 · 851 阅读 · 0 评论 -
@Documented注解的作用
许多注解头部都有@Documented注解,例如jdk中自带的@Deprecated注解,路径是:java/lang/Deprecated.java,头部就含有这个注解。@Documented@Retention(RetentionPolicy.RUNTIME)@Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE})public @interface Deprecated {}那么原创 2021-10-10 16:16:19 · 48479 阅读 · 1 评论 -
ArrayList删除数据的正确写法
核心代码 ArrayList<String> list = new ArrayList<>(); list.add("zhangsan"); list.add(""); list.add("xx"); Iterator<String> iterator = list.iterator(); while(iterator.hasNext()){ Str.原创 2021-08-19 19:51:06 · 236 阅读 · 0 评论 -
java - 如何拆分字符串,同时保留分隔符?
目标:将I have a good friend. shi is beautiful!拆分成I have a good friend.和she is beautiful!,拆分符号是.(点后面有个空格)。困难:普通的split()会把.去掉。解决方案:str.split("(?<=\\. )");测试下: public static void main(String[] args) { String str = "I have a good friend. shi i.原创 2021-08-12 16:18:13 · 1257 阅读 · 0 评论 -
java将多个空格替换成为一个空格
核心代码:str = str.replaceAll(" +"," ");测试: public static void main(String[] args) { String str = "My name is Jack"; System.out.println(str.replaceAll(" +"," ")); }运行结果:原创 2021-08-12 16:01:50 · 1089 阅读 · 0 评论 -
java的4种对象引用
强引用强引用从来不会被JVM回收。软引用在内存不足时被回收,对象缓存,内存不足时终止。弱引用在垃圾回收时,就被回收。对象缓存,垃圾回收时终止。虚引用MVP模式中,为什么要用弱引用?...原创 2021-08-11 12:00:35 · 69 阅读 · 0 评论 -
JVM 栈内存
每个JVM线程有一个私有栈,栈在线程创建的同时被创建。栈由许多帧组成,也叫 “栈帧”每次方法调用都会创建一个栈帧JVM栈和栈帧Java Virtual Machine (JVM) Stack Area原创 2021-08-10 23:14:56 · 57 阅读 · 0 评论 -
锁系列:共享锁CountDownLatch,实现主线程等待子线程任务完成后,再继续执行。
上效果图:大致步骤就是:在主线程中新建CountDownLatch对象latch,调用latch.await(), 并将对象传入子线程,子线内部任务完成时调用latch.countDown()。代码如下:public class CountDownLatchTest { public static void main(String[] args) { try { System.out.println(getCurrentTimeStr() +原创 2021-08-09 18:58:30 · 254 阅读 · 0 评论 -
如何验证java byte中存储的是补码,而不是原码?
我们都只到计算机中数据是以补码的形式存储的,那么怎么验证这个说法了? 比起传统的数值存储,汉字存储更有趣味,我们以汉字存储为例,以utf-8编码存储,一个汉字占用3个字节,而以gbk编码存储,一个汉字占用2个字节。为了便于运算,我们以“张”字为例,gbk解码得到数值,先通过在线网站查询到“张”字的gbk编码如下图:D5原创 2020-07-12 18:47:17 · 622 阅读 · 0 评论 -
多个不同字符替换多个相同目标字符
public class RegexTest { public static void main(String[] args) { testReplaceStr(); } public static void testReplaceStr() { List<String> contentList = new ArrayList<>(); contentList.add("fill1"); cont原创 2021-07-21 16:15:49 · 97 阅读 · 0 评论 -
java枚举判断相等用equals()和==是一样的
这篇写的很详细了:java 枚举类比较是用==还是equals?原创 2021-07-15 19:06:34 · 6308 阅读 · 0 评论 -
如何在线查看jdk 源码中的native方法
以打开Object.clone()方法为例:打开OpenJDK源码网页,选择jdk8进入jdk8里面,选择jdk,如下图。显示的是提交代码的log,所以要切换到browse(浏览),如下图:进入浏览模式后,选择src目录:选择share选择native之后,一路选择java lang Object.c,就能看到Object.c的源代码了。从Object.c中知道,需要找到JVM_Clone函数。我们继续。回到jdk8目录,选择hotspot。..原创 2021-07-14 21:11:45 · 1285 阅读 · 0 评论 -
java对象复制与克隆
怎么实现克隆?public class ObjectCopyTest { public static class Person implements Cloneable{ int age; String name; static class Info { public String address; } Info info; @Override pro..原创 2021-07-14 20:46:03 · 103 阅读 · 0 评论 -
正则表达式:去掉字符串中的符号
去掉字符串中的符号。例如:I have an apple.,用空格拆分后会产生一个字符串apple.,实际情况中可能还会产生apple! apple... apple,等字符串,要获取apple这个单词,就必须去掉这些符号。代码: String str = ",.!,,D_NAME。!;‘’”“**dfs #$%^&()-+1431221\"\"中 国123漢字かどうかのjavaを決定"; str = str.replaceAll("[\\p原创 2021-08-19 18:51:49 · 3935 阅读 · 0 评论 -
正则表达式:字符串替换
将两个#之间的字符,替换成下划线加空格。 private static void getUnderLine() { String str = "This is an #apple#. But I like #pears#."; Pattern regex = Pattern.compile("#.*?#"); Matcher m = regex.matcher(str); StringBuffer resultS.原创 2021-07-02 10:48:25 · 1694 阅读 · 0 评论 -
正则表达式:java获取两个字符中间的字符串
例如:获取This is an #apple#. public static void getFirstContent(String s) { Pattern p = Pattern.compile("(?<=#).*(?=#)"); Matcher m = p.matcher(s); m.find(); System.out.println(m.group()); } //调用 getFirstContent(.原创 2021-07-02 09:56:07 · 1608 阅读 · 0 评论 -
正则表达式:手机号验证
感谢原文:Android 2018最新验证手机号正则表达式 public static boolean isMobileNO(String mobileNums) { /** * 判断字符串是否符合手机号码格式 * 移动号段: 134,135,136,137,138,139,147,150,151,152,157,158,159,170,178,182,183,184,187,188 * 联通号段: 130,131,132.原创 2021-06-10 17:29:34 · 3154 阅读 · 0 评论 -
ArrayList 线程不安全的未解之谜
我用两个线程同时向ArrayList中增加String类型的数据,每个线程加一个数据,结果出现了null,B1 集合长度为2的情况,请问这个null是怎么产生的?源码如下,多运行几次就会出现这个结果。import java.util.ArrayList;import java.util.List;public class ExtendsThread { public List<St...原创 2018-04-25 10:41:01 · 154 阅读 · 0 评论 -
java ArrayList按照某个属性升序排序
后端返回的数据,有时候需要做排序检查,或者客户端自己写排序。按照Bean中的某一个属性生序排列。public class ListSortTest { static class WorkBean { public int value; public String name; public WorkBean(int value, String name) { this.value = value; t.原创 2021-06-29 14:28:45 · 1026 阅读 · 0 评论