
Java笔记
Fiona Tracy
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
double我不知道的细节
double与Double一定不能一概而论。计算结果为小数的运算,若要转为double,要注意括号,double要先强制类型转换第一个数,计算之后再强制类型转换可能与预期答案不符合括号在不同的地方,计算的结果也是不一样的!通常来说,(double) x/ y 与(double) (x) / y 计算结果一样 double mid1 = (double) 8 / 3; double mid3 = (double) (8) / 3; double right1 = (double) 9.原创 2021-04-13 21:50:03 · 314 阅读 · 0 评论 -
了解尺取法
尺取法又称双指针法(此指针非彼指针)。双指针顾名思义,有两个“指针”,根据实际情况不断地移动,从而推进区间的左右端点以得出答案尺取法通常适用于选取区间有一定规律,或者说所选取的区间有一定的变化趋势的情况。尺取法通常会需要对某些量进行预处理,以便能在使用时快速地判断。适用于移动方向确定(一般是从头到尾)、连续区间的最小或最大问题模板:int r = 1, l = 1;//确定两个指针的初始位置while(l <= n){//确定循环结束条件 while(){//括原创 2021-04-13 15:33:34 · 89 阅读 · 0 评论 -
学习BufferedReader从控制台接收数据
public abstract class InputStream extends Object implements CloseableInputStream,该抽象类是所有的类表示字节输入流的父类。这需要定义一个类InputStream应用程序必须提供一个方法,返回输入的下一个字节。1.打开接收窗口,命名一个缓存读入区BufferedReader br = new BufferedReader(new InputStreamReader(System.in));2.获取控制台的一行字符串.原创 2021-04-01 07:49:09 · 432 阅读 · 0 评论 -
Java Split(regex)的学习
1. 按照某一个普通字符进行分割例如:以空格进行分割2. 按照某一个特殊字符切割特殊字符有:( )[ ]{ }$ + ^ - * /?.例如:String[] arr = str.split("\\.");//以.分割字符串特殊字符需要用 \ \ 进行转义3. 按照多个字符切割字符串(1)用“|” 分开多个字符。——以“.” 和空格分割字符串——以“."和?分割——以所有非字母字符的来分割有的字符需要转移,加上 \ \,有点好像不需要,但是为原创 2021-03-31 21:33:53 · 534 阅读 · 0 评论 -
刷题总结——输入问题、Eclipse启动了非目标程序
输入问题如果要输入一长串的字符串,而之前又输入了单个的数据,那么就需要scanner.nextLine();来吃掉上一行的换行符然后再String string = scanner.nextLine();输入一长串字符串之后记得回车,告诉软件我已经输完了,否则就会一直有光标闪烁,然后自己debug,出现到了某个值,游标就不走了,还不见了的情况未结束输入状态:输入完成光标跳到下一行Eclipse启动非目标程序我想启动这个程序,但是却打开了另一个程序有写漏stati原创 2021-03-31 20:48:27 · 113 阅读 · 0 评论 -
取一个数的后几位+取各个位上的数
public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); int a = n % 10; int b = n % 100; int c = n % 1000; int d = n % 10000; System.out.println("后1位:" + a); System.out.println("后2位:" + b); Syst原创 2021-03-30 16:32:03 · 645 阅读 · 0 评论 -
DFS——remove(i)与remove(size()-1)
今天在写一道题的时候,写成了然后答案也是错的,然后我想为什么list是用remove(list.size()-1),而set直接remove(i)就行首先我们在dfs的时候,用set存储下标。当set中不存在该下标时,set加入的该下标,然后继续进行dfs然而加入set 的元素,不会像 list 那样——你加入是什么顺序就是什么顺序;set自有自己的存储方法,也就是说——用set存储,你加入的顺序可能跟set存储的顺序不一样!所以对应的,set中移出某元素,直接传入该元素的值,即可进行原创 2021-03-29 11:22:42 · 367 阅读 · 0 评论 -
BufferedReader读取txt文件
从一个字符输入流中读取文本,缓冲字符,以便提供字符、数组和行的有效读取。可以指定缓冲区大小,也可以使用默认大小。public class 读txt { public static void main(String[] args) { File file = new File("E://蓝桥杯训练/txt文件/pick5.txt"); BufferedReader reader = null; try { reader = new BufferedReader(new FileRea原创 2021-03-29 09:48:03 · 1252 阅读 · 0 评论 -
printf格式化输出日期
链接:https://blog.youkuaiyun.com/SinclairWang/article/details/86844271转载 2021-03-25 15:00:36 · 1269 阅读 · 0 评论 -
Vector的简要学习
一、Vector是什么?Vector类实现了一个可增长对象数组。像一个数组,它包含可以使用整数索引进行访问的组件。“Vector 可实现自动增长的对象数组。 java.util.vector提供了向量类(vector)以实现类似动态数组的功能。创建了一个向量类的对象后,可以往其中随意插入不同类的对象,即不需顾及类型也不需预先选定向量的容量,并可以方便地进行查找。对于预先不知或者不愿预先定义数组大小,并且需要频繁地进行查找,插入,删除工作的情况。可以考虑使用向量类。”原文链接:https://bl..原创 2021-03-25 11:11:26 · 182 阅读 · 0 评论 -
素数&合数&互质数&约数
质数又称素数。概念:>1的数,除了1和它自身外,不能被其他自然数整除的数叫做质数。否则称为合数。最小的质数是2,也是唯一的一个既是偶数又是质数的数。也就是说,除了2以外,质数都是奇数。记住!!1不是质数!!!质数的判断求质数及其判断合数合数指自然数中除了能被1和本身整除外,还能被其他数(0除外)整除的数。最小的合数是4。记住!!1既不属于质数也不属于合数合数的判断 判断逻辑为:如果一个数能被至少3个数整出那么他就是合数 public class 判断是否合数 { p原创 2021-03-23 16:54:26 · 1102 阅读 · 0 评论 -
求素数(质数)的方法(求100以内的素数及判断该数是否为素数)
“素数,也是质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。”求素数的方法:(1)从2~x-1测试是否可以整除(2)去掉偶数之后,从3~x-1,每次加2(3)sqrt(x),只需判断比x开方小的部分,看是否存在因数,就知道X是不是素数(4)判断是否能被已知的且<x的素数整除拿已知素数去整除新数字,如果不存在可以整除新数字的素数,那么新数字也是素...原创 2020-02-12 21:28:54 · 3098 阅读 · 0 评论 -
任意进制之间的转换(Java)
任意进制转换为十进制,都是乘以基数的多少次方,然后相加;十进制转换为任意进制,都是除以基数,然后倒着取余数;用十进制数作中转,可实现任意进制数的转换10——>radix进制一、除k取余21(10)——>?(2)求解过程:21%2=1,21/2=10,10%2=0,10/2=5,5%2=1, 5/2=2,2%2=0, 2/2=1,1%2=1,1/2=0,结束 结果10101public class 除k取余转换进制 { public static void ma.原创 2021-03-08 10:34:52 · 413 阅读 · 0 评论 -
深入学习BinarySearch
前言“这个数组是排序好的,这时我们就可以使用二分查找去找这个数,我们可以选择数组中间的元素,这个中间元素会把数组分成前后两个相等的区间,如果我们要找的元素比中间元素要大,证明这个元素只可能在后半部分区间,我们就只需要去到后半部分区间用类似的方法再次查找;如果比中间元素要小,则需要去到前半部分区间用类似的方法再次查找,直到最后我们找到了,或者说整个数组给分完了(没找到),这样的话时间复杂度是 O(logn)。”理解二分查找适用于已经排好序的数组(非递增/非递减),比较target与nums[mid],去原创 2020-12-02 11:37:52 · 122 阅读 · 0 评论 -
求当前时间的三种方法(Java)
法一// 法一long totalMilliseconds = System.currentTimeMillis();long totalSeconds = totalMilliseconds / 1000;// 毫秒转为秒long currentSeconds = totalSeconds % 60;long totalMinutes = totalSeconds / 60;// 秒转为分钟long currentMinutes = totalMinutes % 60;long tot原创 2020-11-25 16:50:01 · 768 阅读 · 0 评论 -
Java Lambda表达式的简单学习
Lambda表达式Java SE 8中一个重要的新特性。lambda表达式允许你通过表达式来代替功能接口。lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码块)。Lambda表达式还增强了集合库。 Java SE 8添加了2个对集合数据进行批量操作的包: java.util.function 包以及 java.util.stream 包。 流(stream)就如同迭代器(iterator),但附加了许多额外的功能。Lambda表原创 2020-11-10 08:44:36 · 93 阅读 · 0 评论 -
HashMap遍历的方法——总结
之前在统计最大组的数目的时候学到了HashMap的两种遍历方法,现在来总结一下吧。原创 2020-11-07 21:33:22 · 112 阅读 · 0 评论 -
理解Compare()函数的返回值(Java)
Compare函数:Compares its two arguments for order. Returns a negative integer,zero, or a positive integer as the first argument is less than, equalto, or greater than the second.1:前面的数>后面的数,是降序(从大到小)排列,如果想要改为升序排列,就需要返回1-1:前面的数<后面的数,是升序(从小到大)排列,不改变位原创 2020-11-07 17:57:28 · 18283 阅读 · 12 评论 -
对HashMap的key或value进行排序(Java)
HashMap的储存是没有顺序的,而是按照key的HashCode实现.对key排序首先要得到HashMap中的键的集合,使用keySet,转换为数组,然后调用Arrays.sort()进行排序。Hash Map:——Set keySet() —— 返回一个 Set的关键视图包含在这个Map。Set:——Object[ ] toArray() ——返回一个包含此集合中所有元素的数组。—— T[ ] toArray(T[ ] a) ——返回包含此集合中的所有元素的数组;返回的.原创 2020-11-07 17:52:06 · 1206 阅读 · 0 评论 -
Java前缀和及相关习题
什么是前缀和?两个数组x 和 y,满足y0 = x0;y1 = x0+x1;y2 = x0+x1+x2;…y [ n ] = x [1] +x [2]+… x[ n ];数组 y 称为 数组 x的前缀和数组,也叫一维前缀和//只需要遍历的时候一直把之前计算的和 加上自己就能得到当前的和。 private int[] demo(int[] src) { int[] result = new int[src.length]; for (int i = 0; i原创 2020-11-04 16:06:02 · 1874 阅读 · 0 评论 -
Java二维数组的复制(三种方法,无clone())
方法一:直接拷贝数组的地址int[][] array = {{1,2,3},{4,5,6}};int[][] array2 = new int[2][3];array2 = array;此时是把array的地址给了array2,俩者指向同一块内存,所以,当其中一个数组的某个元素改变时,另一个数组的相对应元素也会发生改变。方法二:for循环遍历拷贝int[][] array = {{1,2,3},{4,5,6}};int[][] array2 = new int[2][3]; for(int原创 2020-11-04 11:26:33 · 6779 阅读 · 3 评论 -
Java排序算法冒泡排序和快速排序
一、冒泡排序(1)原理如下: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。(2)实现 public static void bubbleSort(int ...原创 2020-03-31 22:37:54 · 214 阅读 · 0 评论 -
排序算法之直接插入排序、希尔排序
一、直接插入排序(一种查找比较操作和记录移动操作交替地进行的方法)1.思想:第一趟比较前两个数,然后把第二个数按大小插入到有序表中; 第二趟把第三个数据与前两个数从后向前扫描,把第三个数按大小插入到有序表中;依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。直接插入排序是由两层嵌套循环组成的。外层循环标识并决定待比较的数值。内层循环为待比较数值确定其最终位置。直接插入排序是将待比...原创 2020-04-01 13:09:26 · 260 阅读 · 0 评论 -
Java中String的subString()
substring:public String substring(int beginIndex)——返回一个字符串,这个字符串的子串。子字符串从指定索引处的字符和延伸到这个字符串的末尾。public String substring(int beginIndex, int endIndex )——返回一个字符串子串,范围是[beginIndex,endIndex-1]。这样子串的长度是 endIndex-beginIndex。特殊情况:1.返回空字符串:System.out.print原创 2020-10-11 11:27:32 · 532 阅读 · 2 评论 -
Java大数BigInteger和BigDecimal
最好用的是:BigInteger(String val)——将BigInteger的十进制String表示形式转换为BigInteger。int intValue() ——将此BigInteger转换为int。BigInteger multiply(BigInteger val)——返回值为的BigInteger (this * val)。String toString() ——返回此BigInteger的十进制String表示形式。boolean isProbablePrime——&g原创 2020-10-11 10:41:47 · 324 阅读 · 2 评论 -
位运算的一些技巧
一、基本知识(针对二进制)1.&:全一则一2.|:有一则一3.^:在二进制中,相异为一,相同为0(可理解为不进位加法:1^1=0 1^0=1) 概括起来就是:符合交换律、结合律、相反性(x^x=0,x^0=x,x^y^y=x【可去重】)4.~:非运算/取反5.>>、<<:(带符号)右移、左移,符号后面的表示移动的位数(对于i...原创 2020-01-26 22:36:45 · 347 阅读 · 0 评论 -
Java笔记 常用的字符串与字符之间的转换
一、字符串——>字符数组1.直接转:String s = "abc";char[] cs = s.toCharArray();2.有分隔符:得再设一个String类型的数组String[] split(String regex)根据给定正则表达式的匹配拆分此字符串。二、字符数组——>字符串1.字符数组全部转换成字符串String(char[] value)分配一个新的 String,使其表示字符数组参数中当前包含的字符序列char[] cs ={'a','b',原创 2020-08-19 17:31:41 · 701 阅读 · 0 评论 -
Java记笔记之2*2矩阵乘法
public int[][] multiply(int[][] a, int[][] b) { int[][] c = new int[2][2]; for (int i = 0; i < 2; i++) { for (int j = 0; j < 2; j++) { c[i][j] = a[i][0] * b[0][j] + a[i][1] * b[1][j]; } } return c; }这个涉及了线性代数里面的矩阵相乘。...原创 2020-08-14 23:40:19 · 1124 阅读 · 0 评论