Java环境变量配置
[TOC]
文章参考:https://blog.csdn.net/wengyupeng/article/details/52410564
概述Mac配置环境变量这里要说明的是: Mac默认的Java安装路径为/Library/Java/JavaVirtualMachines/
如果想要查找java的安装路径(有时候安装久了忘记,想要查看一下的时候),可以使用命令:
1/usr/libexec/java_home -V
结果(示例):
123456Matching Java Virtual Machines (4): 18.0.2 (x86_64) "Oracle Corporation" - "Java SE 18.0.2" /Library/Java/JavaVirtualMachines/jdk-18.0.2.jdk/Contents/Home 11.0.14 (x86_64) "Oracle Corporation" - "Java SE 11.0.14" /Lib ...
Java随机数之ThreadLocalRandom学习
[TOC]
概述随机数生成是一个非常常见的操作,而且 Java 也提供了 java.util.Random 类用于生成随机数,而且呢,这个类也是线程安全的,就是有一点不好,在多线程下,它的性能不佳。
为什么多线程下,Random的性能不佳?
因为,它采用了多个线程共享一个 Random 实例。这样就会导致多个线程争用。
为了解决这个问题,Java 7 引入了 java.util.concurrent.ThreadLocalRandom 类,用于在多线程环境中生成随机数。
本文接下来的部分,就来看看如何 ThreadLocalRandom 如何执行以及如何在实际应用程序中使用它。
ThreadLocalRandom Via RandomThreadLocalRandom 是 ThreadLocal 类和 Random 类的组合,它与当前线程隔离,通过简单地避免对 Random 对象的任何并发访问,在多线程环境中实现了更好的性能。
也就是说,相比于 java.util.Random 类全局的提供随机数生成, 使用 ThreadLocalRandom,一个线程获得的随机数不受另一个线程的影响 ...
04.Java大数字运算之BigInteger
文章参考:https://www.jb51.net/article/122354.htm
在Java中提供了大数字的操作类,即 java.math.BigInteger 类与 java.math.BigDecimal 类。其中,BigInteger 类是针对大整数的处理类,这里有Integer 类的解释,使用方法和实例,需要的朋友可以参考下。
在 Java 中,有许多数字处理的类,比如 Integer 类。但是Integer 类有一定的局限性,下面我们就来看看比 Integer 类更厉害的一个,BigInteger类。
BigInteger类型的数字范围较 Integer 类型的数字范围要大得多。我们都知道 Integer 是 Int 的包装类,int 的最大值为 231-1,如果要计算更大的数字,使用Integer 数据类型就无法实现了,所以 Java 中提供了BigInteger 类来处理更大的数字。 BigInteger 支持任意精度的整数,也就是说在运算中 BigInteger 类型可以准确地表示任何大小的整数值而不会丢失任何信息。
在 BigInteger 类中封装了多种操 ...
Java的位运算计算基础学习
位运算不管是在Java语言,还是在C语言中,或者其他语言,都是经常会用到的,原始点就从0、1开始。
位运算位运算主要包括:
按位与(&)
按位或(|)
按位异或(^)
取反(~)
左移(<<)
右移(>>)这几种
其中除了取反(~)以外,其他的都是二目运算符,即要求运算符左右两侧均有一个运算量。
基础学习:补码在总结按位运算前,有必要先介绍下补码的知识,我们知道当将一个十进制正整数转换为二进制数的时候,只需要通过除2取余的方法即可,但是怎么将一个十进制的负整数转换为二进制数呢?其实,负数是以补码的形式表示,其转换方式,简单的一句话就是:先按正数转换,然后取反加1。
1234567要将十进制的-10用二进制表示,先将10用二进制表示:0000 0000 0000 1010取反:1111 1111 1111 0101加1:1111 1111 1111 0110所以,-10的二进制表示就是:1111 1111 1111 0110
位运算:按位异或(^)参加运算的两个数,换算为二进制(0、1)后,进行异或运算。只有当相应位上的数字不相同时,该为才取1,若 ...
解析try-catch-finally的执行顺序
概述有时候我们在处理异常的时候不是每次都把它 throws 掉就完事了,很多时候异常是需要我们自己来 catch 并针对所抛出的 Exception 做一些后续的处理工作。
我们在面试的时候。经常会遇到这样的面试题目:
1、try体异常抛出。catch 体里遇到 return 并且没有finally体。是怎么处理?
2、try体不抛异常。catch 体里遇到 return 并且没有finally体。是怎么处理?
3、try体不抛异常。并且有finally体有return语句。是怎么处理?
4、try体抛出异常。并且有catch体和finally体都有return语句。是怎么处理?
5、System.exit() 语句怎么处理??
下面我们来讲讲上面这些面试题。
1、try体异常抛出。catch 体里遇到 return 并且没有finally体。是怎么处理?
123456789101112131415161718192021 /** * try体异常抛出。catch 体里遇到 return 并且没有finally体。 */ private static bool ...
Java的基础数据类型学习
概述面试题:
JAVA 中的几种基本数据类型是什么,各自占用多少字节。
先了解2个单词
1、bit –位:位是计算机中存储数据的最小单位,指二进制数中的一个位数,其值为“0”或“1”。
2、byte –字节:字节是计算机存储容量的基本单位,一个字节由8位二进制数组成。在计算机内部,一个字节可以表示一个数据,也可以表示一个英文字母,两个字节可以表示一个汉字。
1B=8bit
1Byte=8bit
1KB=1024Byte(字节)=8*1024bit
1MB=1024KB
1GB=1024MB
1TB=1024GB
Java基本数据类型。基础类型又能分为我们俗称的四类八种,分别为:
分别为
整型:byte、short、int、long
浮点型:float、double
unicode类型:char
boolean类型:boolean
数据类型
位数
字节数
范围区间
整型
byte
8bit
1个字节
short
16bit
2个字节
int
32bit
4个字节
...
Java的Enum基础知识的学习
[TOC]
概述
面试题-integer c=100 d=100 c==d 一定是false
概述相信大家在面试的过程中可能都遇到过这样一道题吧!
12345678public static void main(String[] args) { Integer a = 1000,b = 1000; Integer c = 100,d = 100; System.out.println(a == b); // false System.out.println(c == d); // true }
相信大家得出的答案都是 false true
但是在这里我一定要说,这个答案不是绝对的 c==d 一定是true,但是a==b 却不一定就是false ,也有可能是true。
但是我得到的值是 true,true 如果不相信的同学或者抱有怀疑的同学请往下看!
我们首先要明白 通常情况下为什么答案会是 false,true。
Integer c = 1000 实际在内部做了Integer c = Integer.valueOf(100)的操 ...
Java序列化之Serializable接口
概述Serializable是Java所提供的一个序列化接口,它是一个空接口,为对象提供标准的序列化和反序列化操作。使用Serializable来实现序列化相当简单,只需要在类的声明中指定一个类似下面的标识即可自动实现默认的序列化过程。
通常我们使用Java的序列化与反序列化时,只需要将类实现Serializable接口即可,剩下的事情就交给了jdk。今天我们就来探究一下,Java序列化是怎么实现的,然后探讨一下几个常见的集合类,他们是如何处理序列化带来的问题的。
问题思考
为什么序列化一个对象时,仅需要实现Serializable接口就可以了。
通常我们序列化一个类时,为什么推荐的做法是要实现一个静态final成员变量serialVersionUID。
序列化机制是怎么忽略transient关键字的, static变量也不会被序列化。
接下来我们就带着问题,在源码中找寻答案吧。