无法启动此程序,因为在计算机中丢失 MSVCP140.dll。尝试重新安装该程序以解决此问题。 的解决办法

31 篇文章 0 订阅
订阅专栏
windowsxp/2000系统工具大集合
01-15
包含常用的XP,2000的进程和服务分析工具,以及DLL检查工具,装机和网管人员必备工具
开发工具箱
03-02
【安装教程】点击链接,可查看安装方法 https://t.csdnimg.cn/NxMv 常用小工具集合于一身,为我们的工作带来了福音。 此次更新移除了原版的右键菜单选项;功能强大、方便、全面的软件开发小工具合集;字符串编码解码;二维码生成、解码;加密解密;HTML/JS/CSS;常用对照表
找不到msvcp140dll无法继续执行代码的详细解决方法
最新发布
weixin_57940283的博客
04-22 672
msvcp140.dll文件在Windows系统扮演着非常重要的角色,它是Microsoft Visual C++ 2015 Redistributable Package的一部分,是一个关键的动态链接库(Dynamic Link Library, DLL)文件。如果你有另一台正常运行相同系统的电脑,手动复制msvcp140.dll文件是一种解决方法,可以从其System32(对于32位系统)或SysWOW64(对于64位系统)文件夹复制msvcp140.dll文件到问题电脑的相应目录。
java常用工具类的使用
03-19
1. Java工具概述 很多人初学程序时,总是在想,那么多的算法该怎么写呀?那么多的数据结构都不熟悉,该怎么实现呀?总是担心英语不好程序学不精通,数学不好写程序无法达到巅峰。学的程序越多,不懂的知识越多。 这种想法很正常,毕竟传统的计算机教育都是从原理开始的,科学原理一般理解起来还能够接受,但是实现起来都很难。计算机发展到了今天,能成为原理的基本已经有人实现了,今天我们学习任何知识都是站在巨人的肩膀上,只要理解程序运行原理,算法的功能即可。底层的各种算法,各种数据结构已经被“巨人们”实现了,一般都放在程序开发类库程序员开发过程直接调用即可。 比如现在木工做家具,已经不存在自己砍树、加工木板、一点一点的雕刻了,如果需要木板,直接到市场上购买,需要各种图案,直接到市场购买,木工的工作就是把这些木板修理一下组装成一套家具即可。“工欲善其事,必先利其器”,在Java程序开发过程,很多算法(比如:MD5加密算法)、很多数据结构(比如链表LinkedList)已经实现并且大多放在类库的java.util包程序员只需要了解各种工具的功能就可以直接调用。比如对一个数组进行排序,程序员可以写如下排序算法: 代码演示:数组排序 public static void sort(int[] arrs) { boolean isSwap = false; for (int i = 0; i < arrs.length - 1; i++) { isSwap = false; for (int j = arrs.length - 1; j > i; j--) { if (arrs[j - 1] > arrs[j]) { isSwap = true; int tmp = arrs[j - 1]; arrs[j - 1] = arrs[j]; arrs[j] = tmp; } } } } 该排序算法只能对整数数组排序,还有其他数据类型呢?就需要重载很多方法进行排序操作。而在Java类库有一个Arrays类的sort方法已经实现各种数据类型的排序算法。程序员只需要调用该类的方法即可。 代码演示:Arrays实现排序 public static void main(String[] args) { int[] ages={23, 45,12,76,34,56,24}; Arrays.sort(ages); for (int i = 0; i < ages.length; i++) { System.out.println(ages[i]); } } 在Java开发类库,提供了很多工具类,我们即将学习最常见的工具类,比如对日期的操作,对集合的操作等。具体更多的工具类,请参考JavaDoc文档。 2. java.util.Date类 Date类包装了毫秒值,毫秒值表示自1970年1月1日00:00:00 GMT开始到现在经过的毫秒数。该类的大部分构造器和方法都已经过时,但是该类使用非常方便,因此目前使用还很普遍,该类的另一个主要功能是,在数据库操作,它允许将毫秒值表示为SQL DATE值,是数据库操作java.sql.Date的父类。关于数据库操作,将在第八章开始讲解。 该类目前推荐使用的构造方法有两个: 构造方法 说明 Date() 按照当前系统时间构造一个Date对象。 Date(long date) 按照给定的时间毫秒值构造一个 Date 对象。 表1 java.util.Date类的构造方法 主要的方法有: 返回 异常 说明 boolean after(Date when) 测试当前对象表示的时间是否在指定时间之后。 boolean before(Date when) 测试当前对象表示的时间是否在指定时间之前。 long getTime() 返回当前对象对应的时间毫秒值 void setTime(long time) 设置时间 表2 java.util.Date类的主要方法 代码演示:时间设置 public class Demo2 { public static void main(String[] args) { Date date=new Date(); ① date.setTime((10L*365+2)*24*60*60*1000); ② System.out.println(date); ③ } } 代码解析: ① 构造当前系统时间。 ② 设置时间值为1970年后10年的时间的毫秒值,10年间有2个闰年,10年的天数是:10*365+2,10L表示当前值是long类型。 ③ 调用Date的toString方法输出结果。 代码输出结果: Tue Jan 01 08:00:00 CST 1980 Q 老师,时间毫秒值从1970年1月1日0:00.000开始计算,上面示例10年后应该是1980年1月1日0:00.000,为什么输出结果是:1980年1月1日 8:00呢? A java.util.Date类型表示的是GMT时间,本身输出是国际化输出,由于国处于东八区时间,因此输出结果是早上8点。而Date的其他构造方法和普通方法的API都不容易实现国际化,因此目前Date类的大多数方法都被标识为过时,表示更灵活的时间类请参考java.util.Calendar。 Date的输出结果是按照国际通用格式输出的,而国更习惯于“年-月-日”的形式输出,这种特殊格式的输出需要用到Java格式化工具。 3. 格式化工具 格式化的目的是把一个对象以不同的格式表示,以满足不同环境对格式的要求,比如:前面学习的Date对象实质是一个以毫秒值表示的时间,但是在不同的国家和地区表示方式不一样。那么就需要对Date进行格式化处理。接下来主要学习Java对日期时间的格式化和对数字的格式化处理。  日期时间格式化 Date类包含了日期和时间,在Java编程,日期通常指年、月、日,时间则指时、分、秒、毫秒。Java对Date进行格式化使用java.text.DateFormat类。在格式表示,经常采用4种格式,这四种格式被定义为DateFormat类的常量。下表所示: 格式 说明 SHORT 以最短的格式表示,比如:09-8-20 MEDIUM 比short完整表示方式,比如:2009-8-20 LONG 比medium更完整的表示方式,比如:2009年8月20日 FULL 综合的表示方式,比如:2009年8月20日 星期四 表3 DateFormat的四种表示格式 因为不同国家地区需要格式化的结果不同,Locale类的对象表示了不同的区域,Locale定义目前全世界几乎所有地区的对象表示,比如: 格式 说明 Locale.CHINA 国地区 Locale.US 美国地区 Locale.FRANCE 法国地区 Locale.CANADA 加拿大地区 表4 Locale对部分地区的表示 DateFormat是一个抽象类,不能直接实例化,可以使用下表的静态方法得到DateFormat的对象。 方法 说明 getDateInstance() 返回默认地区,默认格式的关于日期的DateFormat对象。 getDateInstance(int) 返回指定格式下,默认地区的关于日期的DateFormat对象。 getDateInstance(int, Locale) 返回指定格式,指定地区的关于日期的DateFormat对象。 getTimeInstance() 返回默认地区,默认格式的关于时间的DateFormat对象。 getTimeInstance (int) 返回默认地区,指定格式的关于时间的DateFormat对象。 getTimeInstance (int, Locale) 返回指定地区,指定格式的关于时间的DateFormat对象。 getDateTimeInstance() 返回默认地区、默认日期格式、默认时间格式的关于日期和时间的DateFormat对象。 getDateTimeInstance (int,int) 返回默认地区、指定日期格式、指定时间格式的关于日期和时间的DateFormat对象。 getDateTimeInstance (int,int, Locale) 返回指定地区、指定日期格式、指定时间格式的关于日期和时间的DateFormat对象。 表5 获取DateFormat对象的静态方法 调用DateFormat对象的format方法可以把Date对象转换成为指定格式的String类型数据。比如: Date today=new Date(); DateFormat df=DateFormat.getDateInstance(DateFormat.FULL,Locale.CHINA); String result=df.format(today); 代码演示:日期的不同格式 import java.text.DateFormat; import java.util.Date; import java.util.Locale; public class Demo3 { public static void main(String[] args) { Date today = new Date(); Locale[] locals = new Locale[] { Locale.CHINA, Locale.US, Locale.UK }; for (int i = 0; i < locals.length; i++) { DateFormat df1 = DateFormat.getDateInstance(DateFormat.SHORT, locals[i]); DateFormat df2 = DateFormat.getDateInstance(DateFormat.MEDIUM, locals[i]); DateFormat df3 = DateFormat.getDateInstance(DateFormat.LONG, locals[i]); DateFormat df4 = DateFormat.getDateInstance(DateFormat.FULL, locals[i]); System.out.println(locals[i].getDisplayCountry() + "的日期形式:"); System.out.println("\tShort格式:" + df1.format(today)); System.out.println("\tMedium格式:" + df2.format(today)); System.out.println("\tLong格式:" + df3.format(today)); System.out.println("\tFull格式:" + df4.format(today)); } } } 代码输出结果: 国的日期形式: Short格式:09-8-20 Medium格式:2009-8-20 Long格式:2009年8月20日 Full格式:2009年8月20日 星期四 美国的日期形式: Short格式:8/20/09 Medium格式:Aug 20, 2009 Long格式:August 20, 2009 Full格式:Thursday, August 20, 2009 英国的日期形式: Short格式:20/08/09 Medium格式:20-Aug-2009 Long格式:20 August 2009 Full格式:20 August 2009 在Java程序设计过程,对应日期和时间的格式化,还有一个简单的格式化方式,就是java.text.SimpleDateFormat,该类用字符串指定日期和时间的格式,字符串的字符称为模式字符,模式字符区分大小写。常见的模式字符定义如下: 字母 日期或时间元素 y 年 M 年的月份 w 年的周数 W 月份的周数 D 年的天数 d 月份的天数 F 月份的星期 E 星期的天数 a Am/pm 标记 H 一天的小时数(0-23) k 一天的小时数(1-24) K am/pm 的小时数(0-11) h am/pm 的小时数(1-12) m 小时的分钟数 s 分钟的秒数 S 毫秒数 表6 模式字符串 例如: 日期和时间模式 结果 "EEE, MMM d, ''yy" Wed, Jul 4, '01 "h:mm a" 12:08 PM "yyyy-MM-dd HH:mm:ss" 2009-8-20 14:22 "yyyy年MM月dd HH:mm:ss" 2009年8月20 14:22:23 表7 模式字符串示例 SimpleDateFormat是DateFormat的子类,用法和DateFormat类基本一致,主要使用format()方法。 代码演示:SimpleDateFormat进行日期转换 import java.text.SimpleDateFormat; import java.util.Date; public class Demo4 { public static void main(String[] args) { Date today = new Date(); SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat format2 = new SimpleDateFormat("yyyy年MM月dd HH:mm:ss"); SimpleDateFormat format3 = new SimpleDateFormat("HH:mm:ss"); SimpleDateFormat format4 = new SimpleDateFormat("yyyy"); System.out.println(format1.format(today)); System.out.println(format2.format(today)); System.out.println(format3.format(today)); System.out.println(format4.format(today)); } } 代码输出结果: 2009-08-20 2009年08月20 14:25:58 14:25:58 2009 在程序设计时,界面上用户输入的基本上都是字符串,如果字符串输入一个出生年月,如何把该字符串转换成Date类型呢?可以使用SimpleDateFormat的parse()方法。 代码演示:SimpleDateFormat解析日期 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class Demo5 { public static void main(String[] args) { String birthday="1980-04-16"; SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd"); try { Date bir=format.parse(birthday); System.out.println(bir); } catch (ParseException e) { ① // TODO Auto-generated catch block e.printStackTrace(); } } } 代码解析: ① 用SimpleDateFormat解析日期的时候需要处理其的ParseException异常。  数字格式化 对数字的格式化,在程序处理也是非常常用的,数字格式化主要对小数点位数,表示的形式(比如:百分数表示)等格式处理。 NumberFormat 是所有数值格式的抽象基类。此类提供格式化和解析数值的接口。若要格式化当前Locale的数值,可使用其一个方法: myString = NumberFormat.getInstance().format(myNumber); 若要格式化不同 Locale 的日期,可在调用getInstance方法时指定它。 NumberFormat nf = NumberFormat.getInstance(Locale.FRENCH); 方法 说明 getInstance() 获取常规数值格式。可以指定Local参数。 getNumberInstance() 获取常规数值格式。可以指定Local参数。 getIntegerInstance() 获取整数数值格式。可以指定Local参数。 getCurrencyInstance () 获取货币数值格式。可以指定Local参数。格式化后的数据前面会有一个货币符号,比如:“¥” getPercentInstance() 获取显示百分比的格式。可以指定Local参数。比如:小数 0.53 将显示为 53%。 表8 获取NumberFormat对象 代码演示:NumberFormat进行数字格式化 import java.text.DecimalFormat; import java.text.NumberFormat; import java.util.Locale; public class Demo6 { public static void main(String[] args) { double mynum1 = 230456789; double mynum2 = 0.23; NumberFormat nf1 = NumberFormat.getInstance(Locale.CHINA); NumberFormat nf2 = NumberFormat.getCurrencyInstance(Locale.CHINA); NumberFormat nf3 = NumberFormat.getCurrencyInstance(Locale.US); NumberFormat nf4 = NumberFormat.getPercentInstance(); System.out.println(nf1.format(mynum1)); System.out.println(nf2.format(mynum1)); System.out.println(nf3.format(mynum1)); System.out.println(nf4.format(mynum2)); } } 代码输出结果: 230,456,789 ¥230,456,789.00 $230,456,789.00 23% 关于更复杂的数字格式化,可以使用java.text.DecimalFormat进行处理,该类通过模式字符串对数字格式化。 代码演示:DecimalFormat进行数字格式化 import java.text.DecimalFormat; public class Demo7 { public static void main(String[] args) { int num1=1234567; double num2=0.126543; DecimalFormat df1=new DecimalFormat("#,###"); ① DecimalFormat df2=new DecimalFormat("#.00"); ② DecimalFormat df3=new DecimalFormat("00.#"); ③ DecimalFormat df4=new DecimalFormat("0.##E0"); ④ DecimalFormat df5=new DecimalFormat("0.##%"); ⑤ System.out.println(df1.format(num1)); System.out.println(df2.format(num2)); System.out.println(df3.format(num2)); System.out.println(df4.format(num1)); System.out.println(df5.format(num2)); } } 代码解析: ① #:代表一个位置数字,如果该位置数字不存在,则省略不显示。 ,:代表数字的分隔符,此示例用三位分隔一次。 ② 0:代表一个数字位置,如果该位置不存在,则用0来补充。小数多余部分四舍五入。 .:表示小数点。 #:当前位置是0,则省略不显示。 ③ #:小数部分只显示1位小数,并且进行四舍五入。 ④ E:科学计数法。 ⑤ %:用百分数表示数字。 代码输出结果: 1,234,567 .13 00.1 1.23E6 12.65% 4. java.util.Calendar Calendar类是一个抽象类,它为特定的值诸如YEAR、MONTH、DAY_OF_MONTH、HOUR等日历字段之间的转换和操作日历字段(例如获得下星期的日期)提供了丰富的方法。并且可以非常方便的与Date类型进行相互转换。 使用静态方法getInstance()和getInstance(Locale locale)获取Calendar对象。Calendar定义了很多表示日期时间各个部分的常量字段。 返回值 字段 说明 static int AM 指示从午夜到午之前这段时间的 AM_PM 字段值。 static int DATE get 和 set 的字段,指示一个月的某天。 static int DAY_OF_MONTH get 和 set 的字段,指示一个月的某天。 static int DAY_OF_WEEK get 和 set 的字段,指示一个星期的某天。 static int DAY_OF_YEAR get 和 set 的字段,指示当前年的天数。 static int HOUR get 和 set 的字段,指示上午或下午的小时。 static int HOUR_OF_DAY get 和 set 的字段,指示一天的小时。 static int MINUTE get 和 set 的字段,指示一小时的分钟。 static int MONTH 指示月份的 get 和 set 的字段。 static int PM 指示从午到午夜之前这段时间的 AM_PM 字段值。 static int SECOND get 和 set 的字段,指示一分钟的秒。 static int WEEK_OF_MONTH get 和 set 的字段,指示当前月的星期数。 static int WEEK_OF_YEAR get 和 set 的字段,指示当前年的星期数。 static int YEAR 表示年的 get 和 set 的字段。 表9 Calendar类的日期字段 Calendar类提供了丰富的操作方法,可以单独对年、月、日、时、分、秒等字段单独读取,也可以对星期设置,常用方法如下: 返回 方法 说明 void add(int field, int amount) 根据日历的规则,为给定的日历字段添加或减去指定的时间量。 boolean after(Object when) 判断此 Calendar 表示的时间是否在指定 Object 表示的时间之后,返回判断结果。 boolean before(Object when) 判断此 Calendar 表示的时间是否在指定 Object 表示的时间之前,返回判断结果。 int get(int field) 返回给定日历字段的值。 int getActualMaximum(int field) 给定此 Calendar 的时间值,返回指定日历字段可能拥有的最大值。 int getActualMinimum(int field) 给定此 Calendar 的时间值,返回指定日历字段可能拥有的最小值。 Date getTime() 返回一个表示此 Calendar 时间值(从历元至现在的毫秒偏移量)的 Date 对象。 long getTimeInMillis() 返回此 Calendar 的时间值,以毫秒为单位。 void set(int field, int value) 将给定的日历字段设置为给定值。 void set(int year, int month, int date) 设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值。 void set(int year, int month, int date, int hourOfDay, int minute) 设置日历字段 YEAR、MONTH、DAY_OF_MONTH、HOUR_OF_DAY 和 MINUTE 的值。 void set(int year, int month, int date, int hourOfDay, int minute, int second) 设置字段 YEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE 和 SECOND 的值。 void setTime(Date date) 使用给定的 Date 设置此 Calendar 的时间。 void setTimeInMillis(long millis) 用给定的 long 值设置此 Calendar 的当前时间值。 表10 Calendar类常用方法 代码演示:Calendar的使用 import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Locale; public class Demo8 { public static void main(String[] args) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Calendar cale = Calendar.getInstance(); cale.set(2009, 8, 20);// 年月日同时设置 ① cale.set(Calendar.DAY_OF_WEEK, 2); ② Date date1 = cale.getTime(); ③ System.out.println(sdf.format(date1)); cale.set(Calendar.MONTH, 3); ④ cale.set(Calendar.DAY_OF_MONTH, 28); ⑤ cale.set(Calendar.YEAR, 1978); ⑥ Date date2 = cale.getTime(); System.out.println(sdf.format(date2)); } } 代码解析: ① 可以使用set方法对年月日时分秒同时设置。 ② 把天定位到星期一,Calendar认为第一天是星期天,设置2就是星期一。 ③ Calendar类型转换为日期时间等价的Date类型。 ④ 单独设置月。 ⑤ 单独设置日。 ⑥ 单独设置年。 代码输出结果: 2009-09-21 17:21:37 1978-04-28 17:21:37 Q 老师,为什么通过Calendar设置月与输出差1个月? A 不是差一个月,而是在Calendar对月份的计算是从0开始的,因此设置月份11其实就是国的十二月。 5. Java对集合的操作 Java学习了集合的操作,比如:排序、搜索等,Java用java.util.Arrays对数组操作,使用java.util.Collections对集合框架List操作。他们都是工具类,类的方法全部都是静态方法。  Arrays的方法 1. void Arrays.sort(T[]) 对数组的元素按照升序进行排序。T代表某一数据类型。 代码演示:binarySearch使用 public static void main(String[] args) { int[] arrs=new int[]{12,54,12,8765,123,34,54,23,67}; Arrays.sort(arrs); for (int i : arrs) { System.out.print(i+" "); } } 代码输出结果: 12 12 23 34 54 54 67 123 8765 在sort方法,遇到对象数组的排序时,要给对象提供排序的依据,实现Comparator接口,可以在接口的compare方法指定排序规则,实现Comparator接口的对象称为比较器。 有一个Student类的数组,现在按照年龄进行升序排序,那么Comparator接口compare方法实现如下: 代码演示:compare重新按年龄实现 class Student { String name; int age; public Student(String name, int age) { super(); this.name = name; this.age = age; } public String toString() { return name + "," + age; } } class StuCom implements Comparator<Student> { ① public int compare(Student stu1, Student stu2) { ② if (stu1.age > stu2.age) { return 1; } else if (stu1.age == stu2.age) { return 0; } else { return -1; } } } public static void main(String[] args) { Student[] stus = new Student[] { new Student("小美", 21), new Student("阿聪", 22), new Student("武大郎", 28), new Student("阮小七", 26), new Student("晁盖", 30), new Student("鲁智深", 29), new Student("孙二娘", 26), new Student("扈三娘", 23), new Student("武松", 24) }; Arrays.sort(stus, new StuCom()); for (Student student : stus) { System.out.println(student); } } 代码解析: ① 定义一个比较器,必须实现Comparator接口,否则系统无法对一个对象数组进行搜索规则。 ② 实现Comparator接口的compare方法,对该方法的两个参数进行比较,就是制定了比较的规则。 代码输出结果: 小美,21 阿聪,22 扈三娘,23 武松,24 阮小七,26 孙二娘,26 武大郎,28 鲁智深,29 晁盖,30 2. List Arrays.asList(Object[] objs) 把指定的数组转换为List的对象。 代码演示:asList使用 import java.util.Arrays; import java.util.List; public class Demo9 { public static void main(String[] args) { String[] strs={"aaa","bbb","ccc","ddd","eee","fff","ggg","hhh","iii","jjj"}; List list=Arrays.asList(strs); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } } } 3. int Arrays.binarySearch(T[] objs, key) 在数组objs查找key的位置,返回key的下标,如果查找不到key,则返回负值。 int Arrays.binarySearch(T[] objs,int fromIndex,int toIndex , key) 在数组objs从fromIndex到toIndex位置上查找key,返回key的下标,如果查找不到,返回一个负值。 在binarySearch方法调用之前一定要保证数组已经是排序的,如果没有排序,可以使用Arrays.sort(T[]) 进行排序,然后再进行查找。 代码演示:binarySearch使用 public static void main(String[] args) { String[] strs={"aaa","bbb","ccc","ddd","eee","fff","ggg","hhh","iii","jjj"}; Arrays.sort(strs); System.out.println(Arrays.binarySearch(strs, "ccc")); System.out.println(Arrays.binarySearch(strs, 4,8,"ggg")); System.out.println(Arrays.binarySearch(strs, 4,8,"aaa")); } 如果数组是一个自定义的对象数组,那么搜索之前要先指定比较器。 代码演示:binarySearch搜索对象使用 class StuCom implements Comparator<Student> { ① public int compare(Student stu1, Student stu2) { if (stu1.age > stu2.age) { return 1; } else if (stu1.age == stu2.age && stu1.name.equals(stu2.name)) { return 0; } else { return -1; } } } public static void main(String[] args) { Student[] stus = new Student[] { new Student("小美", 21), new Student("阿聪", 22), new Student("武大郎", 28), new Student("阮小七", 26), new Student("晁盖", 30), new Student("鲁智深", 29), new Student("孙二娘", 26), new Student("扈三娘", 23), new Student("武松", 24) }; Student s = new Student("晁盖", 30); System.out.println(Arrays.binarySearch(stus, s, new StuCom())); ② } 代码解析: ① 该比较器规定了要比较的类型就是Student类型,因此这里使用泛型。 ② 指定了对象数组,对象和比较器的方法进行搜索。结果返回搜索到的对象在数组的下标。 除了上面介绍Arrays的方法外,还有一些其它的方法: 方法 说明 T[] copyOf(T[] t,int length) 把一个数组赋值到长度是length的新数组。T表示数据类型。 fill(T[] t,N newValue) 用一个固定值填充数组所有元素。 表11 Arrays其他常用方法。  Collections类 Collections类与Arrays类一样都提供了一系列的静态方法,只是Arrays主要操作数组,而Collections主要操作List集合,同时还有对Set的相关操作。 代码演示:Collections操作 import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Demo10 { static class Student implements Comparable { ① String name; int age; public Student(String name, int age) { super(); this.name = name; this.age = age; } public String toString() { return name + "," + age; } public int compareTo(Object o) { ② Student stu = (Student) o; if (this.age > stu.age) { return 1; } else if (this.age == stu.age && this.name.equals(stu.name)) { return 0; } else { return -1; } } } public static void main(String[] args) { List<Student> list = new ArrayList<Student>(); Student[] stus = new Student[] { new Student("小美", 21), new Student("阿聪", 22), new Student("武大郎", 28), new Student("阮小七", 26), new Student("晁盖", 30), new Student("鲁智深", 29), new Student("孙二娘", 26), new Student("扈三娘", 23), new Student("武松", 24) }; Collections.addAll(list, stus); ③ Collections.sort(list); ④ for (Student student : stus) { System.out.println(student); } Student stu = new Student("鲁智深", 29); int pos = Collections.binarySearch(list, stu); ⑤ System.out.println(pos); } } 代码解析: ① 在List查找一个对象时,该对象必须实现Comparable接口。 ② compareTo方法使用当前对象与参数对象进行比较。 ③ 把一个数组对象复制到List对象用方法Collections.addAll(……)方法 ④ 对List集合的元素按照自然顺序排序。 ⑤ 二分法查找,在List集合查找Student对象,要求Student对象必须实现Comparable接口。 Collections的主要操作有: 1. int binarySearch(List<? extends Comparable<? super T>> list, T key) 该方法是寻找T对象在List匹配元素的位置。要求List集合必须全部都是T对象,T对象必须实现Comparable接口,如果查找成功返回对象在List的位置,否则返回负数。该方法执行前首先要对List对象的元素排序,该方法还有一个重载方法是: int binarySearch(List<? extends T> list, T key, Comparator<? super T> c) 该方法也是查找T对象在List的位置,List集合必须全部是T元素,但是不要去T必须实现Comparable接口,而是要求传入一个比较器。 2. sort(List<T> list) 对List的元素按照自然排序。要按照用户自定义方式进行排序,必须实现Comparator接口。 sort (List<T> list, Comparator<? super T> c) 根据指定比较器产生的顺序对指定列表进行排序。 3. swap(List<?> list, int i, int j) 在指定列表的指定位置处交换元素。 4. reverse(List<?> list) 反转指定列表元素的顺序。 在Collections还有其他一些方法,可以参考JavaDoc文档。 6. java.lang.Math类 在java.lang.Math类,包含用于执行基本数学运算的方法,如指数、对数、平方根和三角函数等。Math类定义的所有方法和常量全部都是静态的,使用非常方便。定义的常量主要有两个:Math.E和Math.PI分别表示自然对数的底数和圆周率。 Math类主要的方法有: 返回 方法 说明 static T abs(T a) 返回 long 值的绝对值。 static double acos(double a) 返回一个值的反余弦;返回的角度范围在 0.0 到 pi 之间。 static double atan(double a) 返回一个值的反正切;返回的角度范围在 -pi/2 到 pi/2 之间。 static double ceil(double a) 返回最小的(最接近负无穷大)double 值,该值大于等于参数,并等于某个整数。 static double cos(double a) 返回角的三角余弦。 static double floor(double a) 返回最大的(最接近正无穷大)double 值,该值小于等于参数,并等于某个整数。 static double log(double a) 返回 double 值的自然对数(底数是 e)。 static double log10(double a) 返回 double 值的底数为 10 的对数。 static T max(T a, T b) 返回两个 double 值较大的一个。 static T min(T a, T b) 返回两个 long 值较小的一个。 static T pow(T a, T b) 返回第一个参数的第二个参数次幂的值。 static double random() 返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。 static int round(float a) 返回最接近参数的 int。 static double sin(double a) 返回角的三角正弦。 static double sqrt(double a) 返回正确舍入的 double 值的正平方根。 static double tan(double a) 返回角的三角正切。 表12 Math类的常见静态方法
Test_MutiThreadOpcUI.zip
07-11
这是一个使用Winform测试后台线程调用UI组件和窗体的项目工程,方便学习了解线程调用UI组件和窗体。
开发工具箱 | 谷歌(Chrome)浏览器插件
03-03
【插件简介】 常用小工具集合于一身,为我们的工作带来了福音。 此次更新移除了原版的右键菜单选项;功能强大、方便、全面的软件开发小工具合集;字符串编码解码;二维码生成、解码;加密解密;HTML/JS/CSS;常用对照表 【插件网站】 https://www.box3.cn 【插件更新】 2020-12-17 14:25:44 【插件版本】 2.3.0.5 【插件标签】 工具 高效开发 Chrome插件 【插件安装教程】 请下载文件后先解压,然后进入页面: chrome://extensions/ 将文件拖拽到该页面,完成安装。 具体步骤: https://t.csdnimg.cn/NxMv 【热门插件】 ·CSDN 浏览器助手: https://plugin.csdn.net/
电脑提示丢失MSVCP140.dll无法启动程序怎么办【解决方法】
sheng12345678rui的博客
02-16 1348
电脑提示丢失MSVCP140.dll无法启动程序怎么办【解决方法】
无法启动程序,因为计算机“找不到msvcp140.dll”的解决方法
a555333820的博客
10-06 407
msvcp140.dll是Microsoft Visual C++ 2015 Redistributable的一个动态链接库文件,它是许多基于Visual Studio开发的应用程序和游戏的必要组件。2.下载完成解压打开,打开工具后,点击“扫描并修复”,等待扫描完成并修复问题。,dll修复工具还可以帮助您修复 电脑其它未知dll 文件丢失问题,并确保应用程序可以正常运行。1. 程序无法启动,提示“找不到msvcp140.dll”或“无法启动程序,因为找不到msvcp140.dll”。
丢失msvcp140.dll,msvcp110.dll问题解决
热门推荐
凌晨的博客
02-06 10万+
启动RedisDesktopManager的时候提示: 无法启动程序 因为计算机丢失msvcp140.dll 启动xshell的时候提示: 无法启动程序 因为计算机丢失msvcp110.dll 百度了下,大部分的答案都会说下载这个文件,放到C盘的 system32文件夹下,然后打开”开始-运行-输入regsvr32 msvcp140.dll”。 好像有人有用,有人又解决不了问题
msvcp140.dll丢失的4个解决方法,msvcp140.dll丢失的常见原因
weixin_57940283的博客
05-30 1万+
msvcp140.dll是Windows操作系统的一个动态链接库文件,由Microsoft Visual C++程序库所提供。它包含了许多C++函数和类的定义,可以为应用程序提供一些基本服务,比如内存管理、文件输入/输出和网络连接等功能。我们在打开游戏或者软件的时候,电脑提示msvcp140.dll丢失是什么原因呢?下面分享msvcp140.dll丢失的4个解决方法。软件不完整安装当你在安装软件过程断安装过程或者安装过程出现错误时,该软件可能没有完整地安装。
无法启动程序,因为计算机丢失 MSVCP140.dll尝试重新安装程序解决问题
m0_74276368的博客
01-03 669
这个问题通常是由于缺少 Microsoft Visual C++ Redistributable 导致的。你可以尝试以下几种方法来解决这个问题:1. 重新安装 Microsoft Visual C++ Redistributable- 前往 Microsoft 官方网站下载并安装最新版的 Microsoft Visual C++ Redistributable。2. 修复 Visual C++ Redistributable。
SysinternalsSuite windows工具集合
06-14
AccessChk: 显示指定用户或组对 注册表 文件 或服务的访问 AccessEnum: 简单强大的安全工具,显示哪些用户访问了哪些目录、文件及注册键。帮助找出权限策略的漏洞。 AdExplorer: 活动目录浏览器. AdInsight: LDAP 实时监控工具 AdRestore: Server 2003 活动目录对象反删除. Autologon: 登录时跳过密码认证. Autoruns: 显示开机自启动项的配置,比较实用。 显示包括注册键和文件位置在内的全面列表。 BgInfo: 可配置的桌面背景自动生成程序,可以生成含有重要系统信息的桌面背景,其包括 IP 地址, 计算机名, 网络适配器, 等信息. BlueScreen: 不但能精确模拟蓝屏还能重启 (完全借助 CHKDSK) DebugView: Sysinternals 的又一首创: 该程序可以拦截设备驱动对 DbgPrint 的调用和Win32程序对OutputDebugString 的调用. 程序可以浏览或记录本机或远程计算机上调试会话的输出,而无须激活调试器. Desktops:创建虚拟桌面,使用任务栏界面或热键预览每个桌面上的内容并在这些桌面之间轻松地进行切换。 DiskExt: 显示卷分区与磁盘的映射关系。(IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS) DiskView: 图形化磁盘扇区工具 Diskmon: 捕获硬盘的所有活动,或以硬盘活动指示灯的形式出现在托盘。 Du: 按目录浏览磁盘使用情况 EFSDump: 显示有关已加密文件的信息 Filemon: 即时监视文件系统的活动 (监视文件读写,常配合RegMon判断某软件对电脑做了什么手脚) Handle: 小巧的命令行工具,显示呢哪些文件被哪些进程打开,及相关更多信息。 Hex2dec: 16进制-10进制互换. Junction: 创建 NTFS卷上的符号链接(类似Linux的符号链接,灵活运用的话相当实用) LDMDump: 可以转储 Logical Disk Manager 在磁盘的数据库.(LDMDump) ListDLLs: 列出当前载入的所有 DLLs 及他们的位置和版本。2.0 版可以显示已载入模组的完整路径名. LiveKd: 在live(CD) 系统使用 Microsoft 内核调试器或MS 内核调试工具Windbg . LoadOrder: 查看 WinNT/2K 设备的载入顺序 MoveFile: 为下次启动前安排文件的移动和删除操作 LogonSessions: 列出系统活动的登陆会话 NewSID: 了解有关计算机SID的问题,这是一个 SID 更改程序,为你换一个新的SID. NTFSInfo: 使用 NTFSInfo 查看有关 NTFS 卷的详细信息, 包括 主文件表 (MFT) 的大小位置和 MFT-zone, 以及 NTFS 元数据文件的大小. PageDefrag: (启动时)为页面文件和注册表HIVE文件进行碎片整理. PendMoves: 列出延迟到下次启动前执行的文件移动、删除操作 Portmon: 监视串/并口的数据活动支持所有标准的串并口 IOCTLs 甚至可以显示一部分交换的数据. Process Explorer: 能找出进程打开的文件,注册键,以及其他对象,载入的 DLLs和进程所有者等信息。 Process Monitor: 实时监视文件系统,注册表,进程,线程以及DLL的活动. ProcFeatures: 报告进程或窗口对PAE与NX缓冲区溢出保护的支持情况. PsTools: 该命令行工具包提供列出本地/远程计算机进程、远程运行进程、重启、转储事件日志、及更多功能. PsExec: 在远程系统执行进程. PsFile: 查看本地被远程打开的文件. PsGetSid: 显示计算机或用户的 SID . PsInfo: 获取系统信息. PsKill: 终止本地或远程进程. PsList: 显示进程和线程有关的信息. PsLoggedOn: 显示已登陆系统的用户 PsLogList: 转储事件日志记录. PsPasswd: 更改账户密码. PsService: 查看设置服务. PsShutdown: 关闭或重启电脑. PsSuspend: 冻结或恢复进程. RegDelNull: 扫描并删除包含标准注册表编辑器无法删除的内嵌空字符的注册表键. RegHide: 使用内置 API 创建名为 "HKEY_LOCAL_MACHINESoftwareSysinternalsCan't touch me!0" 的注册键及在其创建键值. Regjump: 在Regedit跳转至指定的注册键路径. Regmon: 实时监视所有注册表活动 (监视注册表变化,可以配合FileMon来判断某软件在电脑上做了什么手脚) RootkitRevealer: 扫描系统基于RootKit的恶意程序. SDelete: 兼容发国防部标准的安全删除程序,安全覆盖您的敏感文件并清理已删除文件留下的空闲空间. ShareEnum: 扫描网络上的文件共享并浏览其安全设置,来发现漏洞. Sigcheck: 转储文件版本信息并校验系统的映像是否经过数字签名. Streams: 显示 NTFS 交换数据流 Strings: 在二进制映像内搜索 ANSI / UNICODE 字串. Sync: (释放磁盘写缓存),发送缓存的数据至硬盘/移动磁盘。 TCPView: 活动 socket 的观察器. (可以方便查看什么软件占用了什么端口之类的) VolumeId: 设置 FAT 或 NTFS 驱动器的卷ID Whois: 查看网址的所有者. Winobj: 对象管理器命名空间的查看利器. ZoomIt: 辅助演示工具支持屏幕上进行和画图.
CAD 无法启动程序,因为计算机丢失MSVCP140.dll.尝试重新安装程序解决问题
06-07
CAD 无法启动程序,因为计算机丢失MSVCP140.dll.尝试重新安装程序解决问题
msvcp140d.dll 丢失 msvcp140.dll 丢失
09-28
msvcp140d.dll 丢失 msvcp140.dll 丢失 两个不同的库文件,也有32位和64位,测试过真实有用,不好找。
Win7丢失MSVCP100.dll导致程序无法启动解决办法
06-20
Win7丢失MSVCP100.dll导致程序无法启动解决办法,包含32位与64位两种
vc运行相关dll.rar(游戏运行相关,包含msvcp140d.dll、vcruntime140d.dll、ucrtbased.dll、2010c++运行库)
07-30
游戏运行相关dll,包含msvcp140d.dll、vcruntime140d.dll、ucrtbased.dll、2010c++运行库、msvcr100.dll 安装方法: 2010c++运行库:双击直接安装。 ucrtbased.dll、msvcr100.dll:直接放置在C:\Windows\SysWOW64 ...
msvcp140d.dll
01-15
vs执行opencv代码时报错缺少msvcp140d.dll,下载之后 直接拷贝系统对应的msvcp140d.dll到系统目录里: 1、Windows 95/98/Me系统,将msvcp140d.dll复制到C:\Windows\System目录下。 2、Windows NT/2000系统,将...
无法启动程序,因为计算机丢失msvcp140.dll的修复方法与解决方法
a555333820的博客
09-20 407
无法启动程序,因为计算机丢失msvcp140.dll的修复方法与解决方法
计算机丢失msvcp140.dll怎么解决?分享三个解决方法
weixin_57940283的博客
08-15 980
当我们在运行某些应用程序时,可能会遇到“缺少msvcp140.dll”或“找不到msvcp140.dll”的错误提示。这意味着我们的系统缺少这个重要的动态链接库文件。msvcp140.dll丢失会造成很多软件无法正常启动运行,下面小编就分享三个解决方法。
无法启动程序计算机丢失MSVCP110.dll
06-03
这个错误提示表示您的计算机缺少 MSVCP110.dll 文件,这通常是由于您的计算机缺少 Microsoft Visual C++ Redistributable for Visual Studio 2012 运行库文件导致的。 解决这个问题的办法是下载并安装 Microsoft Visual C++ Redistributable for Visual Studio 2012 运行库文件,您可以在 Microsoft 官方网站上下载安装,具体链接为:https://www.microsoft.com/en-us/download/details.aspx?id=30679 安装完成后,重新启动您的计算机,然后再次尝试运行程序,应该就能正常启动了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • HTTP Status 500 – Internal Server Error 的解决办法: 240892
  • ERROR 1819 (HY000): Your password does not satisfy the current policy requirements 206241
  • git did not exit cleanly (exit code 1) 的解决办法 183031
  • ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) 的解决办法 168778
  • git did not exit cleanly (exit code 128) 的解决办法 137120

分类专栏

  • Spring Cloud 进阶之路 付费 25篇
  • 3060碳达峰碳中和 1篇
  • WeChat 2篇
  • Private 私人定制专栏
  • Activiti 开源工作流程引擎进阶 7篇
  • 企业上云系列详细教程(阿里云 ECS) 17篇
  • MongoDB 进阶之路 8篇
  • Docker 进阶之路 39篇
  • JDK-1.8 新特性 13篇
  • JDK-11 新特性 6篇
  • Spring Security-5.0 进阶之路
  • Java 72篇
  • Vue_Js 16篇
  • Hibernate 2篇
  • Spring 10篇
  • Spring Boot 38篇
  • Spring Cloud 28篇
  • Spring Security 1篇
  • Dubbo 4篇
  • Quartz 7篇
  • Linux 16篇
  • Ubuntu 5篇
  • Redis 11篇
  • MongoDB 8篇
  • Nginx_Linux 13篇
  • Solr_Linux 10篇
  • Docker 37篇
  • Apache_Linux 1篇
  • Tomcat_Linux 8篇
  • Hadoop_Linux 1篇
  • zookeeper 9篇
  • MQ 7篇
  • Oracle 14篇
  • MySQL 31篇
  • VS Code 9篇
  • Eclipse IDE 8篇
  • Intellij IDEA 4篇
  • Maven 11篇
  • Gradle 1篇
  • Jenkins 3篇
  • GitHub 15篇
  • SVN 2篇
  • JDK 2篇
  • Apache_Windwos 10篇
  • Tomcat_Windows 10篇
  • FastDFS 11篇
  • Apache_POI 4篇
  • Activiti 8篇
  • Lodop 1篇
  • Config
  • Utils 9篇
  • JSON 3篇
  • ECS 18篇
  • Media_Server 2篇
  • MyBatisPlus 6篇
  • Postman 2篇
  • CSDN 3篇
  • Other 10篇

最新评论

  • ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'

    weixin_43946772: 千奇百怪的,就你这个最靠谱

  • Client port found: 2181. Client address: localhost. 的解决办法

    mfkxk298: 修改了tomcat端口,解决了,多谢啊!

  • Please refer to dump files (if any exist) [date].dump, [date]-jvmRun[N].dump and [date]... 的解决办法

    小白入道: com/sky/test/SpringDataRedisTest.java(测试类)中@Test方法体要为空的。

  • Proxy error: Could not proxy request /***/***/*** from localhost:8080 to http://000.000.000/. 的解决办法

    Hello_World_QWP: 那你这个就是证书问题

  • npm ERR! request to https://registry.npm.taobao.org/axios ...reason: certificate has expired 的解决办法

    Hello_World_QWP: 客气了,谢谢点赞评论支持!

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • Error processing condition on com.baomidou...MybatisPlusAutoConfiguration.sqlSessionTemplate 的解决办法
  • Intellij IDEA install打包时,程序包com....common.utils不存在 或者 找不到符号 的解决办法
  • npm ERR! request to https://registry.npm.taobao.org/axios ...reason: certificate has expired 的解决办法
2024年5篇
2023年9篇
2022年22篇
2021年19篇
2020年20篇
2019年82篇
2018年176篇
2017年68篇

目录

目录

评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

哆哆女性网五行八字算命梦之队快乐舞步第十二套健身操分解动作水头在线招聘郑州营销网站建设公司华严经梦参老和尚讲解全集酸枣种植周易公司测名网免费测名摆件珠宝霸州网站建设谢字起名tvb最新港剧网女孩起名起名网站制作 长春智姓女孩起什么名字永成美容姓曾男宝起名海城制作网站一切有为法如梦幻泡影解读seo课程培训机构姓毛的男子孩子起名新疆特产加盟算一下我的命顾问有限公司起名免费算命求姻缘怎么给男孩起个英文改名易碎品周转箱齐起名男孩返利网哪个最好苏州设计网站哪家好seo技巧学习班淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻不负春光新的一天从800个哈欠开始有个姐真把千机伞做出来了国产伟哥去年销售近13亿充个话费竟沦为间接洗钱工具重庆警方辟谣“男子杀人焚尸”男子给前妻转账 现任妻子起诉要回春分繁花正当时呼北高速交通事故已致14人死亡杨洋拄拐现身医院月嫂回应掌掴婴儿是在赶虫子男孩疑遭霸凌 家长讨说法被踢出群因自嘲式简历走红的教授更新简介网友建议重庆地铁不准乘客携带菜筐清明节放假3天调休1天郑州一火锅店爆改成麻辣烫店19岁小伙救下5人后溺亡 多方发声两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#青海通报栏杆断裂小学生跌落住进ICU代拍被何赛飞拿着魔杖追着打315晚会后胖东来又人满为患了当地回应沈阳致3死车祸车主疑毒驾武汉大学樱花即将进入盛花期张立群任西安交通大学校长为江西彩礼“减负”的“试婚人”网友洛杉矶偶遇贾玲倪萍分享减重40斤方法男孩8年未见母亲被告知被遗忘小米汽车超级工厂正式揭幕周杰伦一审败诉网易特朗普谈“凯特王妃P图照”考生莫言也上北大硕士复试名单了妈妈回应孩子在校撞护栏坠楼恒大被罚41.75亿到底怎么缴男子持台球杆殴打2名女店员被抓校方回应护栏损坏小学生课间坠楼外国人感慨凌晨的中国很安全火箭最近9战8胜1负王树国3次鞠躬告别西交大师生房客欠租失踪 房东直发愁萧美琴窜访捷克 外交部回应山西省委原副书记商黎光被逮捕阿根廷将发行1万与2万面值的纸币英国王室又一合照被质疑P图男子被猫抓伤后确诊“猫抓病”

哆哆女性网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化