AI写作智能体 自主规划任务,支持联网查询和网页读取,多模态高效创作各类分析报告、商业计划、营销方案、教学内容等。 广告
# 学习常用类 ## 如何查看 JavaAPI 文档 在 Eclipse 中使用 javadoc 生成帮助文档。 1. 工具栏中选中project -> Generate javadoc... 2. ![](https://img.kancloud.cn/b2/09/b2091d58c3e44f308f0cdc7770648f9f_639x607.png) 3. ![](https://img.kancloud.cn/a6/61/a66121a4af358e8d5e645bb010d03612_616x609.png) 4. 为防止中文乱码,填写-encoding UTF-8 -charset UTF-8 ![](https://img.kancloud.cn/ac/d7/acd77b6bab814f40772decb657885fc9_616x609.png) > 在 Workspace 中将项目的代码都设置为 UTF-8 格式。 > 选择「Preference」中搜索 「encoding」将所有的文件类型都改成 UTF-8。 ## Object toString() :直接打印对象调用该方法,一般在类中重写(override)。 > 默认的 toString() 是打印类全名+hashcode hashCode():返回该对象的哈希码值,内存地址。 ## String * 构建字符串的方式 ~~~ String s1 = new String("hello"); char[] cs = {'h','e','l','l','o'}; String s2 = new String(cs); String s3 = "hello"; // 最常用 ~~~ * 常用的一些方法 **charAt(int index)** 返回指定索引处的`char`值。 **replace** **split** **indexOf** **substring** **contains** ~~~ public class UsuallyClass { public static void main(String[] args) { String a = "Hello"; String a1 = new String("Hello"); char[] szc = {'H','e','l','l','o'}; String a2 = new String(szc); System.out.println(a); System.out.println(a1); System.out.println(a2); //根据索引获取字符串中对应的char值 System.out.println(a.charAt(1)); //在字符串尾部拼接字符串,并返回一个新的字符串 String s = a.concat(",world"); System.out.println(s); //判断字符串是否以给定字符串结尾,是返回true,否返回false String s1 = "www.baidu.com"; boolean flag = s1.endsWith(".com"); System.out.println(flag); //比较两个字符串是否相等,针对字符串的比较我们采用equals方法 boolean flag1 = a == a1; //a与a1的引用地址是不相同的 System.out.println(flag1); //equals方法比较的是两个对象的内容是否相等 boolean flag2 = a.equals(a1); System.out.println(flag2); // 对于字符串的比较操作,一般的场景都是比较字符串的内容是否一致 // 返回指定子字符串在此字符串中第一次出现处的索引 int index = s.indexOf("wor"); System.out.println(index); String s2 = "a1a2a3b1b3a4"; System.out.println(s2.indexOf("a")); //返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始 System.out.println(s2.indexOf("a",1)); //将一个字符串转变为char数组 char[] csz = s.toCharArray(); System.out.println(csz); //问:如何写一个方法,使传入一个字符串,输出某个字符在传入字符串中的所有位置 List<Integer> indexs = getIndexsOfStr("1a22a3444a4b", 'a'); for (Integer index1 : indexs) { System.out.print(index1 + "\t"); } System.out.println(); // 打印文件的后缀 String s3 = "d:/js/index.js"; //返回指定子字符串在此字符串中最右边出现处的索引 int index3 = s3.lastIndexOf(".") + 1; //返回一个新的字符串,它是此字符串的一个子字符串 String s4 = s3.substring(index3); System.out.println(s4); String s5 = "abcabcabc"; //替换字符串中相对应内容 String s6 = s5.replace("a", "A"); //替换字符串中收个对应内容 String s7 = s5.replaceFirst("a", "A"); System.out.println(s6); System.out.println(s7); //通过特定字符来分割字符串,返回一个字符串数组 String s8 = "a-b-c-d-e-f"; String[] sz1 = s8.split("-"); for (String ss : sz1) { System.out.println(ss); } //验证是否由自定字符开头 String s9 = "20171108001"; System.out.println(s9.startsWith("20171108")); //返回一个大写字符串 System.out.println(s5.toUpperCase()); //去除字符串两端空格 String s10 = " hello,wolrd! "; String s11 = s10.trim(); System.out.println("#"+s10+"#"); System.out.println("#"+s11+"#"); } public static List<Integer> getIndexsOfStr(String src, char c) { List<Integer> rs = new ArrayList<Integer>(); if (null != src) { char[] cs = src.toCharArray(); for (int i = 0; i < cs.length; i++) { if (cs[i] == c) { rs.add(i); } } } return rs; } } ~~~ ## StringBuffer 在进行大数据的字符串拼接时使用 StringBuffer ~~~ public class Demo3 { public static void main(String[] args) { Date d11 = new Date(); String s = ""; for (int i = 0; i < 100000; i++) { s += 1; } Date d22 = new Date(); System.out.println(d22.getTime() - d11.getTime()); // 3418 Date d1 = new Date(); StringBuffer sb = new StringBuffer(""); for (int i = 0; i < 100000; i++) { sb.append(i); } Date d2 = new Date(); System.out.println(d2.getTime() - d1.getTime()); // 16 } } ~~~ ## 日期 java.util.Date 和 Calendar Date 和 SimpleDateFormat 的运用 ~~~ public class UsuallyClass { public static void main(String[] args) throws ParseException { // 构建当前服务器的时间对象 Date now = new Date(); System.out.println(now); //返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。 System.out.println(now.getTime()); //SimpleDateFormat 是一个以与语言环境相关的方式来格式化和分析日期的具体类。 //它允许进行格式化(日期 -> 文本)、分析(文本 -> 日期)和规范化 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS"); // 格式化的目的是用于显示 System.out.println(sdf.format(now)); SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss"); String dateStr = "2021/10/09 13:04:30"; // 解析字符串的文本,生成 Date对象 Date now2 = sdf2.parse(dateStr); System.out.println(now2.getYear()+1900); /** * now > now2 返回正整数 * now = now2 返回0 * now < now2 返回负整数 */ int result = now.compareTo(now2); System.out.println(result); } } ~~~ Calendar 是更加先进的日期处理类 > 如果只是简单的对日期进行输入,用 Date 就可以了,但是如果要对日期进行复杂的运算,就要使用 Calendar 类,Calendar 和 Date 是可以互相转化的。 * Calendar 和 Date 的转换 * 使用 Calendar 进行复杂的日期运算 * Calendar 只是个工具,具体的日期还是要使用 Date 对象 ~~~ public class UsuallyClass { public static void main(String[] args) throws ParseException { String dateStr = "2017/02/21"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); Date date = sdf.parse(dateStr); //使用默认时区和语言环境获得一个日历(实际上常用于日期相关的计算) Calendar rightNow = Calendar.getInstance(); //使用给定的 Date 设置此 Calendar 的时间 rightNow.setTime(date); //添加30天时间 rightNow.add(Calendar.DAY_OF_MONTH, 30); System.out.println(sdf.format(rightNow.getTime())); //增加一个月时间 rightNow.add(Calendar.MONTH, 1); System.out.println(sdf.format(rightNow.getTime())); //获取当前日期的几号 System.out.println(rightNow.get(Calendar.DAY_OF_MONTH)); //获取当前日期的月份,实际结果是当前月份-1 System.out.println(rightNow.get(Calendar.MONTH)); //更改年份 rightNow.set(Calendar.YEAR, 2019); System.out.println(sdf.format(rightNow.getTime())); //日期前推一天 rightNow.add(Calendar.DAY_OF_MONTH, -1); System.out.println(sdf.format(rightNow.getTime())); } } ~~~ ## java.lang.Math > `Math`类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。 ~~~ public class UsuallyClass { public static void main(String[] args) throws ParseException { //圆周率常量 System.out.println(Math.PI); //获取当前参数绝对值,参数什么类型,返回值什么类型(double,float,int,long) int num1 = -256; num1 = Math.abs(num1); System.out.println(num1); //返回两个数中较大/较小的值 int num2 = Math.max(23, 31); int num3 = Math.min(23,31); System.out.println(num2); System.out.println(num3); //返回一个[0,1)的伪随机数 double num4 = Math.random(); System.out.println(num4); } } ~~~ ## 练习 1. String s = "113@ ere qqq yyui" 请输出所有子串 113 ere qqq yyui ~~~ public static void main(String\[\] args) { String s = "113@ ere qqq yyui"; s = s.replaceAll("@", ""); String \[\] ss=s.split(" "); for (int i = 0; i < ss.length; i++) { System.out.println(ss\[i\]); } } ~~~ 2. 获取当前的日期,并把这个日期转换为指定格式的字符串,如2088-08-08 ~~~ java public static void main(String[] args) { //获取当前日期对象 now; Date now = new Date(); //创建SimpleDateFormat对象 df,并制定日期格式 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //调用df的format(Date date) 方法,传入now; 接收返回的字符串 String datestr = df.format(now); //打印这个字符串 System.out.println(datestr); } ~~~ 3. 生成一个随机100内小数,转换为保留两位小数的字符串,不考虑四舍五入的问题。 ~~~ public static void main(String[] args) { double random = Math.random()*100; System.out.println("随机数为:"); System.out.println(random); String str = random+""; int index = str.indexOf("."); //System.out.println(index); String substring = str.substring(0, index + 3); System.out.println("转换为:"); System.out.println(substring); } ~~~