java
java
yuzhang_zy
现在的我不是最好的我,未来的我才是最好的我,每一篇博客都记录着我的成长
展开
-
java交换List中的两个元素
java中除了可以使用数组交换元素之外,还可以使用Collections交换List中对应两个下标的元素:import java.util.ArrayList;import java.util.Collections;import java.util.List;public class Solution{ public static void main(String[] arg...原创 2020-03-25 22:37:09 · 4803 阅读 · 1 评论 -
java 8遍历List,Map语法
在java 8中的语法遍历list与map还有比较简单的语法,其实还是比较好理解的,有的时候可以使用这些方法来简化代码,例子如下:import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class Main { public st...原创 2020-03-25 00:09:26 · 545 阅读 · 0 评论 -
java获取当前的系统时间
有的时候我们在写页面程序的时候需要使用到当前的系统时间并且动态显示到页面中,这个时候就需要使用到Java中相关的日期API了,具体的代码如下:import java.text.SimpleDateFormat;import java.util.Date;public class Main { public static void main(String[] args) { Simp...原创 2019-03-21 17:41:44 · 15331 阅读 · 0 评论 -
矩阵的乘法
1. 矩阵A能够与矩阵B相乘的前提条件是矩阵A的列等于矩阵B的行,矩阵A的每一行乘以矩阵B的每一列上对应的数字然后把相乘的结果加起来这样就得到了结果矩阵中的当前行与列的位置上的结果,所以需要使用三重循环来解决,第一层循环表示的矩阵A的行,第二层循环表示的是矩阵的列,第三层循环表示的是矩阵A的列或者矩阵B的行,循环之后就可以把矩阵相乘的结果计算出来了2. 具体的代码如下:public cl...原创 2019-03-21 16:52:59 · 1680 阅读 · 0 评论 -
java中常用的api
1. 字符串与数字之间的相互转换① 将数字转化为字符串:String s= Integer.toString(int n);String s= Double.toString(double n);② 将数字型的字符串转化为数字int n = Integer.parseInt(String s);double n = Double.parseDouble(s);...原创 2019-03-17 14:52:05 · 325 阅读 · 0 评论 -
int类型的整数能够表示的最大数字
1. Int类型的整数能够表示的最大数字是2147483647,因为int类型可以表示4个字节所以有32位二进制为1,下面是具体的代码测试public class Main { public static void main(String[] args) { int u = 1; for(int i = 0; i <= 30; i++){ u *= 2; } S...原创 2019-03-11 20:31:04 · 18356 阅读 · 1 评论 -
矩阵的快速幂运算(二进制)
1. 问题描述:有的时候我们需要计算出一个矩阵的n次幂,因为有的时候我们需要将问题转化为矩阵的n次幂之后那么可以降低时间的复杂度,但是希望不要通过循环一个矩阵乘以一个矩阵,因为这样的时间复杂度为O(n),希望能够通过较快的方法来计算出矩阵的n次幂,一种方法就是类似于求解一个数字的快速幂运算的方法来进行求解,其中还会涉及到矩阵的乘法的运算,而矩阵的能够相乘需要满足A矩阵的列要等于B矩阵的行,具体...原创 2019-03-19 21:34:09 · 2804 阅读 · 0 评论 -
大数阶乘(数组处理)
1.问题描述:当控制台输入比较大的数字的时候求出n的阶乘,并且 1<= n <= 5000,请在控制台输出n!的结果2. 思路分析:① 首先从题目中可以看到n是比较大的数字,我们知道当n小于20的时候这个阶乘已经非常大了,当再进行计算比20大的时候可能Long的数据类型已经无法保存其中的结果了,Long类型的数据最大能够保存的数字为9223372036854775...原创 2019-03-10 13:48:10 · 3266 阅读 · 0 评论 -
对于HashSet集合中的简单数据类型进行排序
1. 有的时候我们希望加入集合中的元素不要有重复的元素,所以我们可以使用HashSet这个集合来保证加入的元素没有重复的元素,但是怎么样对其进行排序呢?经常使用到的是使用HashSet来存储String类型的数据并且需要对集合中元素进行排序,查询了一下资料,可以将HashSet转为ArrayList集合,然后使用Collections.sort()方法对其进行排序2. 下面是测试的代码i...原创 2019-03-06 20:50:03 · 2118 阅读 · 0 评论 -
将字符串的某两个字符进行交换
1. 有的时候需要对一个字符串中的某两个字符进行交换,总结了一下,可以使用以下的方法① 可以使用将字符串中的某一段替换成其它字符的方法来交换某两个字符,可以规定替换的长度为1就可以替换一个字符,先得到字符串中两个需要交换的字符串的位置然后进行长度为1的分别替换即可,需要借助StringBuilder数据结构StringBuilder sb = new StringBuilder(str)...原创 2019-03-09 11:06:54 · 20611 阅读 · 0 评论 -
java中的File类的文件操作
1. 程序可能经需要获取磁盘上文件的有关信息或者在磁盘上创建文件等,这个时候需要学习和使用File类,需要注意的是File类的对象主要用来获取文件本身的一些信息,例如文件的目录、文件的长度或者文件的读写权限等,不涉及对文件的读写操作2. 下面是File类中与文件的一些相关的操作① 在指定的路径下创建一个文件,第一个参数是文件的路径,第二个参数是文件的名字File file = ne...原创 2019-04-06 19:31:34 · 612 阅读 · 0 评论 -
java计算对数
1. 有的时候我们需要求解出某些以2为底的对数或者以10为底的对数,但是在Java的API中好像只是提供了对于以e为底的底数的计算,这个时候我们就需要借助于数学公式来帮助我们求解了,这个数学公式就是换底公式我们借助于这个换底公式可以计算以任意数字为底数的对数2. 下面是具体的代码:public class Main { public static void main(String[...原创 2019-03-28 20:04:24 · 10149 阅读 · 0 评论 -
java中对对象数组的排序
1. 我们在编写程序的时候有时候会遇到需要对当前的对象数组按照对象中的每一个属性来进行排序,这个时候就需要使用到我们的Arrays.sort()方法了,在方法中需要传入的第一个参数是需要排序的对象数组,第二个参数是传入比较器的对象,在比较器对象中我们需要重写compare方法,在这个方法里面规定按照对象中的某个属性排序的规则,这样就可以对对象数组进行排序了需要注意的一个问题是对象数组每一个元素...原创 2019-06-27 13:52:04 · 8397 阅读 · 3 评论 -
上车人数
1. 题目描述样例输入:5 7 32 4样例输出:132. 思路如下:问题是要先求解出第二站的上车人数才能够求出第x站的开车人数是多少是要找出相应的规律才可以求解出第二站的上车人数列出上面的人数可以得出规律:a的系数和x的系数都为前面两个系数之和,实现的Java代码如下:3.一般循环变量中如果有某个变量未知,把变量带入循环里面是求解不出来的,所以一般要寻找...原创 2018-08-01 22:56:14 · 969 阅读 · 0 评论 -
无重复字符的最长子串的问题
1. 问题描述给定一个字符串,找出不含有重复字符的最长子串的长度。示例:给定"abcabcbb",没有重复字符的最长子串是"abc",那么长度就是3。给定"bbbbb",最长的子串就是"b",长度是1。给定"pwwkew",最长子串是"wke",长度是3。请注意答案必须是一个子串,"pwke"是子序列而不是子串。问题网址:https://le...原创 2018-08-09 22:46:43 · 161 阅读 · 0 评论 -
整数转化为罗马数字
1. 问题描述: 罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做II,即为两个并列的 1。12 写做XII,即为X+II。 27 写做XXVII, 即为XX+V+II。通常情况下,罗马数字中小的数字在大的数字的右边。...原创 2018-08-10 17:45:26 · 5147 阅读 · 2 评论 -
Cantor数表
1. 问题描述:2. 解题思路:我采用的方法是观察这些排列的数字有什么规律,可以通过观察发现其中数字的走向为向右->左下->下->右上依次循环,向右的时候分母加1,左下的时候分子加1,分母减1,向下的时候分子加1,右上的时候分子减1,分母加1,这点弄清楚之后进行下一步的分析,如何控制数字方向的问题,这就需要在循环中进行判断,最重要的是要设置标志来改变方向,一旦数...原创 2018-08-12 22:46:08 · 2740 阅读 · 0 评论 -
java的面向对象编程思想(封装--继承--多态--接口)
1. 之前在微信公众号上看到一篇关于Java面向对象的编程思想,感觉写的很不错,可以学习一下,体验一下Java的面向对象的编程思想,当学习了Java比较久的时候再回来看这些知识的话,感觉会有更深一层的领会,我感觉在Java的学习中对于数据的封装是比较重要的,怎么样对于具体的问题使用恰当的数据结构来封装数据,这个是我们需要熟练掌握的,例如在之前的广度优先搜索的例子中,需要借助于队列来进行求解,因为涉...原创 2019-04-26 18:30:12 · 593 阅读 · 0 评论 -
代码调试
1. 在写程序的过程中离不开的步骤就是代码的调试,对于稍微复杂一点的代码比如像搜索,动态规划这些这些往往都是逻辑上的错误导致的,这个时候就需要仔细斟酌你的代码,必要的时候借助于debug工具来进行调试(虽然说输出语句很有效,但是对于搜索这些代码来说是有输出语句来条数的话会比较难分析出错误在哪里因为搜索的时候输出的值太多了)根据控制台的提示来推断出大体上的逻辑错误出现在哪里,对于自己不熟悉的的语...原创 2019-04-12 21:14:50 · 2051 阅读 · 0 评论 -
java获取当前的日期
获取当前的日期需要使用到Calendar类,通过Calendar类的getInstance静态方法来获取实例,下面是具体的代码:import java.util.Calendar;public class Main { public static void main(String[] args) { Calendar calendar = Calendar.getInstance(...原创 2019-04-12 08:56:14 · 168 阅读 · 0 评论 -
java中输入数据需要注意的问题
有的时候控制台输入的数据第一行是一个数字,第二行以下的若干行是字符串,这个时候我们对于第一行使用nextInt方法或者其他的接收数字的方法进行接收的话那么我们需要注意一个问题假如我们使用nextLine方法接收下面的字符串的话,那么我们需要对回车符进行额外接收,因为nextLine方法会接收回车符,假如不接收那么最后一行的数据我们就无法进行接收,这里是特别要注意的一个点,使用next方法那么就不需...原创 2019-03-04 09:05:47 · 334 阅读 · 0 评论 -
Java中对于面向对象思想的理解
1. ① 与C语言面向过程不同的是,C语言中函数是主体,如果需要修改数据需要函数来进行修改,所以来说函数在C语言中是很重要的,基本上对于数据的操作都是这样的,但是有的时候不太方便,而Java语言面向对象的特点就解决了这个问题,面向对象的思想中把描述一个对象的特点的属性都封装在这个对象中,通过对象中的set方法来修改对象中的属性的值,通过get方法来获取当前对象中属性的值,也可以通过构造方法来对属性...原创 2019-02-22 22:10:01 · 1566 阅读 · 0 评论 -
Set集合
Set集合存储的元素是无序的但是是唯一的,即不允许集合中重复元素的出现import java.util.HashSet;import java.util.Set;public class Main{ public static void main(String[] args) { Set<Integer> set = new HashSet<In...原创 2018-10-17 20:51:10 · 248 阅读 · 0 评论 -
普通的进制的转换
1. 问题描述:从控制台输入一个十进制int型整数,从控制台输出八进制,十进制,十六进制表示(隔行输出)十六进制输出的假如有字母表示的话输出大写字母传统的方法:把一个数除以要转换的进制,一直除下去直到被除数为零,此时需要把余数按照逆序连接排列起来最后形成最终的结果其中将余数的连接起来使用到了StringBuilder的append()方法,这个方法可以动态地增加字符串,在连接起来需...原创 2018-10-18 19:26:24 · 177 阅读 · 0 评论 -
矩阵的乘法
1. 有两个矩阵:A和B(矩阵实际上就是二维数组)A矩阵和B矩阵可以做乘法运算必须满足A矩阵的列的数量等于B矩阵的行的数量运算规则:A的每一行中的数字对应乘以B的每一列的数字把结果相加起来 矩阵乘法的结果为行与列的关系为:行数量为A的行数量, 列数量为B的列数量2. 因为每一次都是A的行与B的列,所以最外层的两层循环可以使用A的行的数量的变化,B的列的数量进行变化而...原创 2018-09-03 17:09:16 · 590340 阅读 · 7 评论 -
死循环的调试
当Java程序中出现了死循环的时候,可以通过以下步骤来解决①首先判断循环跳出的条件是否可以结束循环,把具体的例子代入进去看看程序的逻辑是否符合可以跳出循环②当真的判断不出来哪里出现错误的时候此时可以使用输出语句输出相关的值查看相关情况来进行进一步的判断,但是往往出现死循环的时候往往在控制台打印的时候打印出来的数字是跳跃的,无法观看,此时需要定义一个变量来计数,在循环中计数,当循环达到一定的...原创 2018-08-28 22:12:48 · 735 阅读 · 0 评论 -
Java中四个修饰符的访问权限
1. 访问限制修饰符有:private、protected和public2. ① 使用关键字private修饰的成员变量或者方法称为私有变量和私有方法,该成员变量和方法只能在同一个类中被访问,不能够使用类名来操作这个私有变量和私有方法 ② 不使用private、protected和public修饰的成员变量或者方法称为友好变量和友好方法,在与该类同包的其他类中可以访问该成员变量与方法,...原创 2018-08-22 11:39:06 · 1457 阅读 · 0 评论 -
Random类
1.可以使用Math类调用其类方法random()返回一个0-1之间的随机数(不包括0和1)例如下面代码生成1至100之间的一个随机整数(包括1和100)(int)(Math.random()*100+1;因为比如0.5强制转化为int之后还是为02. Random类的构造方法:public Random ();public Random (lon...原创 2018-08-15 20:48:02 · 1336 阅读 · 0 评论 -
StringBuffer类
1. 学习了String字符串对象,String类创建的字符串是不可以修改的,也就是说,String字符串不能修改、删除或者替换字符串的某个字符,即String对象一旦创建,那么实体不可以再发生变化,但是我们在Java中有一个类StringBuffer类,该类可以创建可以修改的字符串序列,也就是说,该类的对象的实体的内存空间可以自动地改变大小,便于存放一个可变的字符序列,比如一个StringBuf...原创 2018-08-15 20:16:53 · 249 阅读 · 0 评论 -
Java中数组越界的问题
1. 以前刚开始接触Java的时候发现Java中数组越界的问题真的是好难解决,有时候长一点的程序逻辑复杂一点就找不出错误了,现在时间久了之后发现数组越界中最常见的就是:一开始的时候定义了了数组的长度,由于某种原因导致在输出语句的时候或者赋值的时候超出了数组的最大长度2. 当发生数组越界之后控制台会有提示的,...outofIndex...的错误,而且最重要的是它会提示出第几行,只要在出现错误的...原创 2018-08-11 19:54:15 · 13123 阅读 · 1 评论 -
Java中next与nextLine方法的区别
1. Java中的Scanner类中的方法next()与nextLine()都是吸取输入控制台输入的字符①next()方法不会吸取字符前和后的空格/Tab,只吸取字符,开始吸取字符(字符前后不算)直到遇到空格/Tab/回车截取吸取②nextLine()吸取字符前后的空格/Tab键,也会吸收回车符2. 下面对next与nextLine()方法进行测试①从控制台输入:abcd abcd...原创 2018-10-26 13:41:42 · 3931 阅读 · 2 评论 -
Map用来计数的功能-建立键-值之间的对应关系
Map一个很方便的就是可以使用计算某个字符出现了多少次或者某个数字出现了多少次下面是使用map来计算某个数字的质因数出现的次数private static void primeFactor(int n) { int count = 0; //质因数和出现次数的映射 Map<Integer,Integer> map = new H...原创 2018-09-25 20:02:38 · 1294 阅读 · 0 评论 -
Java中的substring截取字符串方法
1. 在处理字符串的过程中有很多情况下会遇到需要截取字符串的情况,这个时候使用Java中提供的substring方法来截取就非常方便了2. 其中比较经常使用到的方法有两个:① public String substring(intbeginIndex)这个方法截取的字符串是从索引beginIndex开始的,到整个字符串的末尾,例如:字符串String s = "abcdef";调...原创 2018-11-02 10:19:49 · 187087 阅读 · 4 评论 -
进制转换
1. 问题网址:http://lx.lanqiao.cn/problem.page?gpid=T427问题描述: 用户输入三个字符,每个字符取值范围是0-9,A-F。然后程序会把这三个字符转化为相应的十六进制整数,并分别以十六进制,十进制,八进制输出,十六进制表示成3位,八进制表示成4位,若不够前面补0。(不考虑输入不合法的情况)输入 1D5输出(注意冒号后面有一个空格) He...原创 2019-02-17 15:43:52 · 173 阅读 · 0 评论 -
Java中equals方法与==的区别
1. 有的时候我们需要比较两个基本数据类型或者引用数据类型这个时候就需要使用到equals方法或者==,所以弄清楚它们的区别是非常重要的 2. 在查询资料的过程中,我发现下面对于equals方法与==的区别的理解是非常有用的:① ==是一个比较运算符,基本数据类型比较的是值,引用数据类型比较的是地址值(比较地址值即是指是否为同一个对象的引用)equals()是一个方法,只能比较引用...原创 2019-02-08 20:50:51 · 377 阅读 · 0 评论 -
十进制到十六进制的转化
1. 使用BigInteger中构造方法来进行进制的转换,再调用BigInteger的toString来转换成目标进制,不指定toString方法中的第二个参数表示转化为十进制的字符串形式,注意一般十六进制的存在字母的默认是转化为小写字母,这个时候还需要再调用toUpperCase方法将其转化为大写字母输出2. 代码如下:import java.math.BigInteger;impo...原创 2019-01-29 16:32:32 · 400 阅读 · 0 评论 -
十六进制到八进制的基本转化
1. 其中可以使用好几种方法来进行转化①. 使用Long类或者Integer类中的toString()方法来进行转换,Long.parseLong(sc.next(), 16)指定从控制台接收16进制形式的字符串,假如不指定默认是接收十进制形式的字符串parseLong/Int方法中的第二个参数从控制台接收什么进制形式的字符串,toString方法中的第二个参数指明转化为什么进制形式的字符...原创 2019-01-29 15:50:20 · 472 阅读 · 0 评论 -
Java中的BigInteger类(处理大数)
1. 我们有时候会遇到特别大的是数字,而且这个时候数字已经超过了Long型的最大范围,而Java中有一个类就是用来处理很大的数据的类,为BigInteger类2. 下面是BigInteger类常用的方法,基本上所有的操作要转换成BigInteger对象来进行处理具体的测试代码如下:import java.math.BigInteger;public class Main { /...原创 2018-12-08 13:07:29 · 917 阅读 · 0 评论 -
java中输出字符的ascii值
1. 我们可以通过将字符强转为int型进行输出那么在控制台中我们将会得到字符的ascii值,这里我们使用nextLine()方法来接收字符串,可以接收空格/Tab键,使用next()方法则不会接收空格/Tab键,但是这里使用nextLine方法不能打印回车键的ascii值因为它遇到回车键就截止接收字符了2. 具体的测试代码如下:import java.util.Scanner;publ...原创 2018-12-07 17:47:52 · 27647 阅读 · 0 评论 -
重写Object类的toString方法
1. 我们在写Java程序的时候有时候需要对某个对象进行操作了之后加入需要查看对象里面的属性的话需要重写Object类的toString方法,但是一般涉及到的是好几个属性,有的属性是没有进行初始化的,那么假如这个使用开发工具来自动生成toString方法的话,那么也会把那些空的属性的值也输出来,但是我们往往需要看不为空的属性这个时候就需要自己去根据具体情况来自己重写一下toString方法了2...原创 2018-11-27 22:02:37 · 2079 阅读 · 0 评论