1.Scanner 类
一个可以解析基本类型和字符串的简单文本扫描器。
package cn.wxuns;
import java.util.Scanner;
public class MyScanner {
public static void main( String[] args){
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入一个数字");
int sc = myScanner.nextInt();
System.out.println(sc);
}
}
2.Random 类
生成伪随机数
package cn.wxuns;
import java.util.Random;
public class MyRandom {
public static void main(String[] args){
int random = new Random().nextInt(100);
System.out.println(random);
}
}
3.ArrayList 类
定义:ArrayList<String>,ArrayList<Student>
方法:add,set,get,remove,clone,size 等
package cn.wxuns;
import java.util.ArrayList;
public class MyArray {
public static void main(String[] args){
ArrayList<String> arr = new ArrayList<>();
arr.add("lisi");
System.out.println(arr.get(0));
}
}
ArrayList 对象不能存储基本类型,只能存储引用类型的数据。类似 不能写,但是存储基本数据类型对应的包装类型是可以的。所以,想要存储基本类型数据, <> 中的数据类型,必须转换后才能编写,转换写法如下:
4.String 类
类 String 中包括用于检查各个字符串的方法,比如用于比较字符串,搜索字符串,提取子字符串以及创建具有翻译为大写或小写的所有字符的字符串的副本。
1. 字符串不变:字符串的值在创建后不能被更改。
String s1 = "abc"; s1 += "d"; System.out.println(s1); // "abcd" // 内存中有"abc","abcd"两个对象,s1从指向"abc",改变指向,指向了"abcd"
2. 因为 String 对象是不可变的,所以它们可以被共享
String s1 = "abc"; String s2 = "abc"; // 内存中只有一个"abc"对象被创建,同时被s1和s2共享。
3."abc" 等效于 char [] data={ 'a' , 'b' , 'c' } 。
例如: String str = "abc"; 相当于: char data[] = {'a', 'b', 'c'}; String str = new String(data); // String底层是靠字符数组实现的。
构造方法
- public String () :初始化新创建的 String 对象,以使其表示空字符序列。
- public String (char [] value) :通过当前参数中的字符数组来构造新的 String。
- public String (byte [] bytes) :通过使用平台的默认字符集解码当前参数中的字节数组来构造新的 String。
常见 String 类方法:
- length()字符串的长度
- charAt()截取一个字符
- getchars()截取多个字符并由其他字符串接收
- getBytes () 将字符串变成一个 byte 数组
- toCharArray () 将字符串变成一个字符数组
- equals () 和 equalsIgnoreCase () 比较两个字符串是否相等,前者区分大小写,后者不区分
- startsWith () 和 endsWith () 判断字符串是不是以特定的字符开头或结束
- toUpperCase () 和 toLowerCase () 将字符串转换为大写或小写
- concat () 连接两个字符串
- trim () 去掉起始和结束的空格
- substring()截取字符串
- indexOf () 和 lastIndexOf () 前者是查找字符或字符串第一次出现的地方,后者是查找字符或字符串最后一次出现的地方
- compareTo () 和 compareToIgnoreCase ()按字典顺序比较两个字符串的大小,前者区分大小写,后者不区分
- replace () 替换
- 5.Arrays 类
java.util.Arrays 此类包含用来操作数组的各种方法,比如排序和搜索等。其所有方法均为静态方法,调用起来非常简单。
1.Arrays.asList(T… data)
注意:该方法返回的是 Arrays 内部静态类 ArrayList,而不是我们平常使用的 ArrayList,,该静态类 ArrayList 没有覆盖父类的 add, remove 等方法,所以如果直接调用,会报 UnsupportedOperationException 异常- 将数组转换为集合,接收一个可变参
List<Integer> list = Arrays.asList(1, 2, 3); Integer[] data = {1, 2, 3}; List<Integer> list = Arrays.asList(data);- 如果将基本数据类型的数组作为参数传入, 该方法会把整个数组当作返回的 List 中的第一个元素,多维数组
int[] data = {1, 2, 3}; List<int[]> list = Arrays.asList(data);2.Arrays.fill()
- 用指定元素填充整个数组(会替换掉数组中原来的元素)
Integer[] data = {1, 2, 3, 4}; Arrays.fill(data, 9); System.out.println(Arrays.toString(data)); // [9, 9, 9, 9]- 用指定元素填充数组,从起始位置到结束位置,取头不取尾(会替换掉数组中原来的元素)
Integer[] data = {1, 2, 3, 4}; Arrays.fill(data, 0, 2, 9); System.out.println(Arrays.toString(data)); // [9, 9, 3, 4]3.Arrays.sort()
- 对数组元素进行排序(串行排序
int[] data = {1, 2, 3,1,3,4}; Arrays.sort(data); System.out.println(data);- 对数组元素的指定范围进行排序(串行排序)
String[] data = {"1", "4", "3", "2"}; System.out.println(Arrays.toString(data)); // [1, 4, 3, 2] // 对下标[0, 3)的元素进行排序,即对1,4,3进行排序,2保持不变 Arrays.sort(data, 0, 3); System.out.println(Arrays.toString(data)); // [1, 3, 4, 2]- 使用自定义比较器,对数组元素的指定范围进行排序(串行排序)
String[] data = {"1", "4", "3", "2"}; System.out.println(Arrays.toString(data)); // [1, 4, 3, 2] // 对下标[0, 3]的元素进行降序排序,即对1,4,3进行降序排序,2保持不变 Arrays.sort(data, 0, 3, (str1, str2) -> { if (str1.compareTo(str2) > 0) { return -1; } else { return 1; } }); System.out.println(Arrays.toString(data)); // [4, 3, 1, 2]4.Arrays.parallelSort()
对数组元素进行排序(并行排序),当数据规模较大时,会有更好的性能Arrays.parallelSort(data);5.Arrays.binarySearch () 二分法 查找
注意:在调用该方法之前,必须先调用 sort () 方法进行排序,如果数组没有排序, 那么结果是不确定的,此外如果数组中包含多个指定元素,则无法保证将找到哪个元素
6.Arrays.copyOf()
拷贝数组,其内部调用了 System.arraycopy () 方法,从下标 0 开始,如果超过原数组长度,会用 null 进行填充Integer[] data1 = {1, 2, 3, 4}; Integer[] data2 = Arrays.copyOf(data1, 2); System.out.println(Arrays.toString(data2)); // [1, 2] Integer[] data2 = Arrays.copyOf(data1, 5); System.out.println(Arrays.toString(data2)); // [1, 2, 3, 4, null]7.Arrays.copyOfRange(T[] original, int from, int to)
拷贝数组,指定起始位置和结束位置,如果超过原数组长度,会用 null 进行填充,同 68.Arrays.equals(Object[] array1, Object[] array2)
判断两个数组是否相等,实际上比较的是两个数组的哈希值,即 Arrays.hashCode (data1) == Arrays.hashCode (data2)9.Arrays.deepEquals(Object[] array1, Object[] array2)
判断两个多维数组是否相等,实际上比较的是两个数组的哈希值,即 Arrays.hashCode (data1) == Arrays.hashCode (data2)10.Arrays.hashCode(Object[] array)
返回数组的哈希值11.Arrays.deepHashCode(Object[] array)
返回多维数组的哈希值12.Arrays.toString(Object[] array)
返回数组元素的字符串形式Integer[] data = {1, 2, 3}; System.out.println(Arrays.toString(data)); // [1, 2, 3]13.Arrays.deepToString(Object[] array)
返回多维数组元素的字符串形式14.Arrays.setAll(T[] array, IntFunction
Integer[] data = {1, 2, 3, 4}; // i为索引值 Arrays.setAll(data, i -> data[i] * 2); System.out.println(Arrays.toString(data)); // [2, 4, 6, 8]15.Arrays.parallelSetAll(T[] array, IntFunction
Integer[] data = {2, 3, 4, 5}; // 第一个元素2不变,将其与第二个元素3一起作为参数x, y传入,得到乘积6,作为数组新的第二个元素 // 再将6和第三个元素4一起作为参数x, y传入,得到乘积24,作为数组新的第三个元素,以此类推 Arrays.parallelPrefix(data, (x, y) -> x * y); System.out.println(Arrays.toString(data)); // [2, 6, 24, 120]16.Arrays.spliterator(T[] array)
返回数组的分片迭代器,用于并行遍历数组17.Arrays.stream(T[] array)
返回数组的流 Stream,然后我们就可以使用 Stream 相关的许多方法了6.Math 类
java.lang.Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。类似这样的工具类,其所有方法均为静态方法,并且不会创建对象,调用起来非常简单。
- public static long abs (double a): 返回 a 的绝对值。
- public static double max (double a,double b): 返回 a、b 的最大值。
- public static double min (double a,double b): 返回 a、b 的最小值。
- pubic static double random (): 产生一个 0~1 之间的随机数 (不包括 0 和 1)。
- public static double pow (double a,double b); 返回 a 的 b 次幂。
- public static double sqrt (double a): 返回 a 的平方根。
- public static double log (double a): 返回 a 的对数。
- public static double sin (double a): 返回 a 的正弦值。
- public static double asin (double a): 返回 a 的反正弦值。
- public static double ceil (double a): 返回大于 a 的最小整数,并将该整数转化为 double 型数据方法的名字 ceil 是天花板的意思,很形象)。例如,Math. eil52) 的值是 16.0。
- public static double floor (double a): 返回小于 a 的最大整数,并将该整数转化为 double 型数据。例如,Math.floor (15.2) 的值是 15.0,Mat.floor (-15.2) 的值是 - 16.0。
- public static long round (double a): 返回值是 (long) Math.floor (a+0.5)), 即所谓 a 的 “四舍五入” 后的值。一个比较通俗好记的办法是:如果 a 是非负数,round 方法返回 a 的四舍五入后的整数 (小数大于等于 0.5 入,小于 0.5 舍): 如果 a 是负数,round 方法返回 a 的绝对值的四舍五入后的整数取负,但注意,小数大于 0.5 入,小于等于 0.5 舍,例如,Math.round (-15.501) 的值是 - 16,Math.round (-15.50) 的值是 - 15。
7.Object 类
对象,所有的类都继承与 Object 类,可重写部分方法
8. 日期时间类
Date 类
表示特定的瞬间,精确到毫秒。
after,before,clone,getTime,hashCode,toStringDateFormat 类
是日期 / 时间格式化子类的抽象类,我们通过这个类可以帮我们完成日期和文本之间的转换,也就是可以在 Date 对象与 String 对象之间进行来回转换。
- 格式化:按照指定的格式,从 Date 对象转换为 String 对象。
- 解析:按照指定的格式,从 String 对象转换为 Date 对象。
由于 DateFormat 为抽象类,不能直接使用,所以需要常用的子类 java.text.SimpleDateFormat
创建 SimpleDateFormat
import java.text.DateFormat; import java.text.SimpleDateFormat; public class MySimpleDateFormat { public static void main(String[] args) { // 对应的日期格式如:2018-01-16 15:06:38 DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); } }常用方法:
- public String format (Date date):将 Date 对象格式化为字符串。
- public Date parse (String source):将字符串解析为 Date 对象。
Calendar 类
Calendar 为抽象类,由于语言敏感性,Calendar 类在创建对象时并非直接创建,而是通过静态方法创建 getInstance(),返回子类对象
常用方法:- public int get (int field):返回给定日历字段的值。
- public void set (int field, int value):将给定的日历字段设置为给定值。
- public abstract void add (int field, int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。
- public Date getTime ():返回一个表示此 Calendar 时间值(从历元到现在的毫秒偏移量)的 Date 对象。
Calendar 类中提供很多成员常量,代表给定的日历字段:
9.System 类
- currentTimeMillis 方法:毫秒级的时间戳
- arrayCopy 方法:将数组中指定的数据拷贝到另一个数组中。System.arraycopy( 源数组, 源数组, 目标数组, 目标数组索引起始位置, length);
10.StringBuilder 类
由于 String 类的对象内容不可改变,所以每当进行字符串拼接时,总是会在内存中创建一个新的对象。
在 API 中对 String 类有这样的描述:字符串是常量,它们的值在创建后不能被更改。为了解决这一问题,可以使用 java.lang.StringBuilder 类。构造函数:
- public StringBuilder ():构造一个空的 StringBuilder 容器。
- public StringBuilder (String str):构造一个 StringBuilder 容器,并将字符串添加进去。
方法:
- public StringBuilder append (...):添加任意类型数据的字符串形式,并返回当前对象自身。
- public String toString ():将当前 StringBuilder 对象转换为 String 对象。
11. 包装类
Java 提供了两个类型系统,基本类型与引用类型,使用基本类型在于效率,然而很多情况,会创建对象使用,因为对象可以做更多的功能,如果想要我们的基本类型像对象一样操作,就可以使用基本类型对应的包装类,如下:
基本数值 ----> 包装对象
Integer i = new Integer(4);//使用构造函数函数 Integer iii = Integer.valueOf(4);//使用包装类中的valueOf方法
文章浏览阅读343次。五种原始的变量类型1.Undefined--未定义类型 例:var v;2.String -- ' '或" "3.Boolean4.Number5.Null--空类型 例: var v=null;Number中:NaN -- not a number非数本身是一个数字,但是它和任何数字都不相等,代表非数,它和自己都不相等判断是不是NaN不能用=_curry函数未定义
文章浏览阅读1.2w次,点赞2次,收藏17次。兑换码编码设计当前各个业务系统,只要涉及到产品销售,就离不开大大小小的运营活动需求,其中最普遍的就是兑换码需求,无论是线下活动或者是线上活动,都能起到良好的宣传效果。兑换码:由一系列字符组成,每一个兑换码对应系统中的一组信息,可以是优惠信息(优惠券),也可以是相关奖品信息。在实际的运营活动中,要求兑换码是唯一的,每一个兑换码对应一个优惠信息,而且需求量往往比较大(实际上的需求只有预期_优惠券编码规则
文章浏览阅读45次。C语言程序设计实训教程教学课件作者周林ch04结构化程序设计课件.ppt* * 4.1 选择结构程序设计 4.2 循环结构程序设计 4.3 辅助控制语句 第四章 结构化程序设计 4.1 选择结构程序设计 在现实生活中,需要进行判断和选择的情况是很多的: 如果你在家,我去拜访你 如果考试不及格,要补考 如果遇到红灯,要停车等待 第四章 结构化程序设计 在现实生活中,需要进行判断和选择的情况..._在现实生活中遇到过条件判断的问
文章浏览阅读999次。幻数使用说明 在驱动程序中实现的ioctl函数体内,实际上是有一个switch{case}结构,每一个case对应一个命令码,做出一些相应的操作。怎么实现这些操作,这是每一个程序员自己的事情。 因为设备都是特定的,这里也没法说。关键在于怎样组织命令码,因为在ioctl中命令码是唯一联系用户程序命令和驱动程序支持的途径 。 命令码的组织是有一些讲究的,因为我们一定要做到命令和设备是一一对应的,利_ioctl-number.txt幻数说明
文章浏览阅读399次。键盘按下“Shift+Ctrl+p” 输入: C++Configurations,选择JSON界面做如下改动:1.首先把 “/usr/include”,放在最前2.查看C++路径,终端输入gcc -v -E -x c++ - /usr/include/c++/5 /usr/include/x86_64-linux-gnu/c++/5 /usr/include/c++/5/backward /usr/lib/gcc/x86_64-linux-gnu/5/include /usr/local/_orb-slam3 include 报错
文章浏览阅读129次。本系列的最后一篇,因未有精力写更多的入门教程,上篇已经抛出书单,有兴趣的朋友可阅读好书来成长,此系列主讲有理由爱Sqlserver的论证性文章,希望读者们看完后,可自行做出判断,Sqlserver是否真的合适自己,目的已达成。渴望自动化及使用场景笔者所最能接触到的群体为Excel、PowerBI用户群体,在Excel中,我们知道可以使用VBA、VSTO来给Excel带来自动化操作..._sqlsever 数据分析
文章浏览阅读294次,点赞6次,收藏4次。教育智脑)建立学校的全连接中台,对学校运营过程中的数据进行处理和标准化管理,挖掘数据的价值。能:一、原先孤立的系统聚合到一个统一的平台,实现单点登录,统一身份认证,方便管理;三、数据共享,盘活了教育大数据资源,通过对外提供数。的方式构建教育的通用服务能力平台,支撑教育核心服务能力的沉淀和共享。物联网将学校的各要素(人、机、料、法、环、测)全面互联,数据实时。智慧校园解决方案,赋能教学、管理和服务升级,智慧教育体系,该数据平台具有以下几大功。教育大数据平台底座:教育智脑。教育大数据平台,以中国联通。_高校智慧大脑
文章浏览阅读9.5k次,点赞2次,收藏27次。分治法,动态规划法,贪心算法这三者之间有类似之处,比如都需要将问题划分为一个个子问题,然后通过解决这些子问题来解决最终问题。但其实这三者之间的区别还是蛮大的。贪心是则可看成是链式结构回溯和分支界限为穷举式的搜索,其思想的差异是深度优先和广度优先一:分治算法一、基本概念在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两_算法概念实例
文章浏览阅读5.6k次。考研篇emmmmm,这是我随笔篇章的第二更,原本计划是在中秋放假期间写好的,但是放假的时候被安排写一下单例模式,做了俩机试题目,还刷了下PAT的东西,emmmmm,最主要的还是因为我浪的很开心,没空出时间来写写东西。 距离我考研结束已经快两年了,距离今年的考研还有90天左右。 趁着这个机会回忆一下青春,这一篇会写的比较有趣,好玩,纯粹是为了记录一下当年考研中发生的有趣的事。 首先介绍..._考研调剂抑郁
文章浏览阅读438次。SpringMVC文章目录SpringMVC1、SpringMVC简介1.1 什么是MVC1.2 什么是SpringMVC1.3 SpringMVC的特点2、HelloWorld2.1 开发环境2.2 创建maven工程a>添加web模块b>打包方式:warc>引入依赖2.3 配置web.xml2.4 创建请求控制器2.5 创建SpringMVC的配置文件2.6 测试Helloworld2.7 总结3、@RequestMapping注解3.1 @RequestMapping注解的功能3._class org.springframework.web.filter.characterencodingfilter is not a jakart
文章浏览阅读4.9k次。gdb 远程调试的一个问题:Don't know how to run. Try "help target".它在抱怨不知道怎么跑,目标是什么. 你需要为它指定target remote 或target extended-remote例如:target extended-remote 192.168.1.136:1234指明target 是某IP的某端口完整示例如下:targ..._don't know how to run. try "help target".
文章浏览阅读85次。习题 11、算法描述主要是用两种基本方法:第一是自然语言描述,第二是使用专用工具进行算法描述2、c 语言程序的结构如下:1、c 语言程序由函数组成,每个程序必须具有一个 main 函数作为程序的主控函数。2、“/*“与“*/“之间的内容构成 c 语言程序的注释部分。3、用预处理命令#include 可以包含有关文件的信息。4、大小写字母在 c 语言中是有区别的。5、除 main 函数和标准库函数以..._c语言语法0x1e