文章目录
- 1.Math类
- 2.System类
- 1.exit
- 代码
- 结果
- 2.arraycopy
- 参数解释
- 代码
- 结果
- 3.currentTimeMillens
- 代码
- 结果
- 3.大数处理方案
- 基本介绍
- BigInteger类
- 介绍
- 代码
- 结果
- BigDecimal类
- 介绍
- 代码
- 结果
- 4.日期类
- 对于IDEA类图中的属性![image-20240101190844530](https://img-blog.csdnimg.cn/img_convert/6d285b7dfa10bddec5ba6b8b3c59776f.png)
- 第一代日期类
- 代码
- 结果
- 第二代日期类(Calendar)
- 基本介绍
- 代码
- 结果
- 第三代日期类
- 基本使用
- 进阶使用
- 5.章节练习
- 练习一
- 题目
- 代码
- 结果
- 练习二
- 题目
- 代码
- 结果
- 练习三
- 题目
- 代码
- 结果
- 练习四
- 题目
- 代码
- 结果
- 练习五
- 题目
- 代码
- 结果
- 常用类
- 1.Math类
- 2.System类
- 1.exit
- 代码
- 结果
- 2.arraycopy
- 参数解释
- 代码
- 结果
- 3.currentTimeMillens
- 代码
- 结果
- 3.大数处理方案
- 基本介绍
- BigInteger类
- 介绍
- 代码
- 结果
- BigDecimal类
- 介绍
- 代码
- 结果
- 4.日期类
- 对于IDEA类图中的属性![image-20240101190844530](https://img-blog.csdnimg.cn/img_convert/9e65cace4e31b884a7fa4185678dbe73.png)
- 第一代日期类
- 代码
- 结果
- 第二代日期类(Calendar)
- 基本介绍
- 代码
- 结果
- 第三代日期类
- 基本使用
- 进阶使用
- 5.章节练习
- 练习一
- 题目
- 代码
- 结果
- 练习二
- 题目
- 代码
- 结果
- 练习三
- 题目
- 代码
- 结果
- 练习四
- 题目
- 代码
- 结果
- 练习五
- 题目
- 代码
- 结果
1.Math类
/**
* @author 孙显圣
* @version 1.0
*/
public class Math_ {
public static void main(String[] args) {
//1.abs 绝对值
int abs = Math.abs(-9);
System.out.println(abs);
//2.pow 求幂
double pow = Math.pow(2, 10);
System.out.println(pow);
//3.ceil 向上取整,返回>=该参数的最小整数
double ceil = Math.ceil(3.1);
System.out.println(ceil);
//4.floor 向下取整,返回<=该参数的最小整数
double floor = Math.floor(3.8);
System.out.println(floor);
//5.round 四舍五入
long round = Math.round(-5000.67);
System.out.println(round);
//6.sqrt 求开方
double sqrt = Math.sqrt(9.0);
System.out.println(sqrt);
//求2-7的随机数
for (int i = 0; i < 10; i++) {
System.out.println(2 + (int) (Math.random() * 6)); //2 + 0到5就是2到7
}
}
}
2.System类
1.exit
代码
package system_;
/**
* @author 孙显圣
* @version 1.0
*/
public class System_ {
public static void main(String[] args) {
// exit 退出当前程序
System.out.println("1");
System.exit(0); //正常情况退出
System.out.println("2");
}
}
结果
2.arraycopy
参数解释
代码
package system_;
import java.util.Arrays;
/**
* @author 孙显圣
* @version 1.0
*/
public class System_ {
public static void main(String[] args) {
int[] src = new int[]{1,2,3};
int[] dest = new int[3];
System.arraycopy(src, 0, dest, 0, src.length); //从src数组的0位置复制到dest的0位置,复制src的所有元素
System.out.println(Arrays.toString(dest));
}
}
结果
3.currentTimeMillens
代码
package system_;
/**
* @author 孙显圣
* @version 1.0
*/
public class CurrentTimeMillens {
public static void main(String[] args) {
System.out.println(System.currentTimeMillis());
}
}
结果
3.大数处理方案
基本介绍
BigInteger类
介绍
- 在编程中,如果需要处理很大的整数,long不够用, 则交给BigInteger来处理
- 在对这个类进行操作的时候不能直接使用加减乘除的符号,要使用特定的方法
代码
package bignum;
import java.math.BigInteger;
/**
* @author 孙显圣
* @version 1.0
*/
public class BigInteger_ {
public static void main(String[] args) {
BigInteger bigInteger = new BigInteger("33333333333333333333333333333333333333333333333333333333333333");
System.out.println(bigInteger);
BigInteger bigInteger1 = new BigInteger("1111111111111111");
//加法
BigInteger add = bigInteger.add(bigInteger1);
//减法
BigInteger subtract = bigInteger.subtract(bigInteger1);
//乘法
BigInteger multiply = bigInteger.multiply(bigInteger1);
//除法
BigInteger divide = bigInteger.divide(bigInteger1);
System.out.println("add = " + add);
System.out.println("subtract = " + subtract);
System.out.println("multiply = " + multiply);
System.out.println("divide = " + divide);
}
}
结果
BigDecimal类
介绍
- 在编程中,如果需要处理很大的浮点数,double不够用,则交给BigDecimal来处理
- 在对这个类进行操作的时候不能直接使用加减乘除的符号,要使用特定的方法
- 在遇到除不开的数的时候可能会抛出异常,此时就增加参数,BigDecimal.ROUND_CEILING,就会截取与子类相同长度的精度
代码
package bignum;
import java.math.BigDecimal;
import java.math.RoundingMode;
/**
* @author 孙显圣
* @version 1.0
*/
public class BigDecimal_ {
public static void main(String[] args) {
BigDecimal bigDecimal = new BigDecimal("1999.123323213218888888");
BigDecimal bigDecimal1 = new BigDecimal("2");
//加法
BigDecimal add = bigDecimal.add(bigDecimal1);
//减法
BigDecimal subtract = bigDecimal.subtract(bigDecimal1);
//乘法
BigDecimal multiply = bigDecimal.multiply(bigDecimal1);
//除法
BigDecimal divide = bigDecimal.divide(bigDecimal1, BigDecimal.ROUND_CEILING); //添加参数,避免除不尽的情况
//输出这四个结果
System.out.println("add = " + add);
System.out.println("subtract = " + subtract);
System.out.println("multiply = " + multiply);
System.out.println("divide = " + divide);
}
}
结果
4.日期类
对于IDEA类图中的属性
如果有getter或者setter方法则表明这个方法后面的名字为属性
第一代日期类
代码
package date_;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @author 孙显圣
* @version 1.0
*/
public class Date01 {
public static void main(String[] args) throws ParseException {
Date date = new Date(); //获取当前系统时间
System.out.println("当前日期为:" + date);
Date date1 = new Date(1232134343); //通过毫秒数来确定时间,毫秒数加上1970年
System.out.println("日期为:" + date1);
//创建简单日期格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年 MM月 dd日 hh:mm:ss E");
String format = sdf.format(date); // 把当前日期格式化一下然后给一个字符串
System.out.println("格式化之后的日期为:" + format);
//把一个格式化的String转换成对应的Date
String s = "2024年 01月 01日 07:24:21: 星期一";
Date parse = sdf.parse(s); //这里会有异常的问题,直接alt + Enter抛出异常即可
System.out.println("转换后的日期为:" + parse);
}
}
结果
第二代日期类(Calendar)
基本介绍
- Calendar是一个抽象类,并且构造器是私有的
- 可以通过getInstance来获取实例
代码
package date_;
import java.util.Calendar;
/**
* @author 孙显圣
* @version 1.0
*/
public class Date02 {
public static void main(String[] args) {
Calendar c = Calendar.getInstance(); //获取当前日期
System.out.println("c = " + c);
//获取日历对象的某个日历字段
System.out.println("年:" + c.get(Calendar.YEAR));
System.out.println("月:" + (c.get(Calendar.MONTH)+ 1)); //加一的原因是这个月份是从0开始的
System.out.println("日:" + c.get(Calendar.DAY_OF_MONTH));
System.out.println("时:" + c.get(Calendar.HOUR));
System.out.println("分:" + c.get(Calendar.MINUTE));
System.out.println("秒:" + c.get(Calendar.SECOND));
//输出获取的时间的组合
System.out.println(c.get(Calendar.YEAR) + "年" + (c.get(Calendar.MONTH)+ 1) + "月" + c.get(Calendar.DAY_OF_MONTH) + "日" + c.get(Calendar.HOUR) + "时" + c.get(Calendar.MINUTE) + "分" + c.get(Calendar.SECOND) + "秒");
}
}
结果
第三代日期类
基本使用
package date_;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
/**
* @author 孙显圣
* @version 1.0
*/
public class Date03 {
public static void main(String[] args) {
LocalDateTime now = LocalDateTime.now(); //获取目前的时间
System.out.println(now);
//单独获取年月日,时分秒
System.out.println("年 = " + now.getYear());
System.out.println("月 = " + now.getMonth()); //英文的
System.out.println("月 = " + now.getMonthValue()); //中文的
System.out.println("日 = " + now.getDayOfMonth());
System.out.println("时 = " + now.getHour());
System.out.println("分 = " + now.getMinute());
System.out.println("秒 = " + now.getSecond());
LocalDate now1 = LocalDate.now(); //只可以获取年月日
LocalTime now2 = LocalTime.now(); //只可以获取时分秒
}
}
进阶使用
package date_;
import java.sql.Date;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
/**
* @author 孙显圣
* @version 1.0
*/
public class Date04 {
public static void main(String[] args) {
LocalDateTime now = LocalDateTime.now();
//格式化日期类
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); //设置格式
String format = dateTimeFormatter.format(now); //格式化
System.out.println(format);
//时间戳与Date之间的转换
Instant now1 = Instant.now(); //获取时间戳
System.out.println(now1);
java.util.Date from = Date.from(now1); //时间戳 - > Date
Instant instant = from.toInstant(); //Date - > 时间戳
//提供plus 和 minus方法来对当前时间进行加减
LocalDateTime localDateTime = now.plusDays(89); //当前时间加上89天
String format1 = dateTimeFormatter.format(localDateTime);
System.out.println(format1);
LocalDateTime localDateTime1 = now.minusMinutes(60); //当前时间减去60分钟
String format2 = dateTimeFormatter.format(localDateTime1);
System.out.println(format2);
}
}
5.章节练习
练习一
题目
代码
package homework11_;
/**
* @author 孙显圣
* @version 1.0
*/
public class HomeWork01 {
public static void main(String[] args) {
System.out.println("反转前:" + "abcdef");
String res = null;
try {
res = reverse("abcdef",1,1);
} catch (Exception e) {
System.out.println(e.getMessage()); //抛出异常后这里就可以抓住异常
System.exit(-1); //出异常之后,反转后的代码就没有必要继续执行了,所以直接返回
}
System.out.println("反转后:" + res);
}
public static String reverse(String str, int start, int end) {
//对参数做一个验证,将正确的写出来然后再取反就可以
if (!(str != null && start >= 0 && end > start && end < str.length())) {
throw new RuntimeException("参数不正确");
}
String s = str.substring(start, end + 1); //截取出来需要翻转的部分
char[] charArray = s.toCharArray();
char temp;
for (int i = 0; i <= charArray.length / 2 - 1; i++) { //进行反转
temp = charArray[i];
charArray[i] = charArray[charArray.length - i - 1];
charArray[charArray.length - i - 1] = temp;
}
String re = new String(charArray); //将反转好的部分转化成String类型
StringBuilder stringBuilder = new StringBuilder(str); //转换成StringBuilder进行字符替换
stringBuilder.replace(start, end + 1, re); //将反转好的部分进行替换
return stringBuilder.toString();
}
}
结果
练习二
题目
代码
package homework11_;
import java.util.Scanner;
/**
* @author 孙显圣
* @version 1.0
*/
public class HomeWork02 {
public static void main(String[] args) {
try {
judgement();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
public static void judgement() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入用户名:");
String username = scanner.next();
//进行检验
if (username.length() > 4 || username.length() < 2) {
throw new RuntimeException("用户名输入有误");
}
System.out.println("请输入密码:");
String password = scanner.next();
boolean res = true;
//判断是否都是数字
for (char c: password.toCharArray()) {
if (!Character.isDigit(c)) {
res = false;
}
}
if (!(res && password.length() == 6)) {
throw new RuntimeException("密码输入有误");
}
System.out.println("请输入邮箱:");
String mailbox = scanner.next();
int a = mailbox.indexOf('@');
int b = mailbox.indexOf('.');
if (!(a >= 0 && a < b)) {
throw new RuntimeException("邮箱输入有误");
}
}
}
结果
练习三
题目
代码
package homework11_;
import java.util.Scanner;
/**
* @author 孙显圣
* @version 1.0
*/
public class HomeWork03 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入人名,以空格分隔");
String s = scanner.nextLine();
String[] split = s.split(" "); //以空格分隔
char s2 = split[1].charAt(0); //取出第二个元素的首字母
String res = split[2].concat(",").concat(split[0]).concat(".").concat(String.valueOf(s2));
System.out.println(res);
}
}
结果
练习四
题目
代码
package homework11_;
import java.util.Scanner;
/**
* @author 孙显圣
* @version 1.0
*/
public class HomeWork04 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入字符串");
String str = scanner.next();
int big = 0;
int small = 0;
int number = 0;
int other = 0;
//按照ascii表来判断
char[] charArray = str.toCharArray();
for (char c:
charArray) {
if (c >= 'A' && c <= 'Z') {
big ++;
} else if (c >= 'a' && c <= 'z') {
small ++;
} else if (c >= '0' && c <= '9') {
number ++;
}else {
other ++;
}
}
System.out.println("大写:" + big + " 小写:" + small + " 数字:" + number + " 其余:" + other);
}
}
结果
练习五
题目
代码
package homework11_;
/**
* @author 孙显圣
* @version 1.0
*/
public class HomeWork05 {
public static void main(String[] args) {
String s1 = "hspedu";
Animal a = new Animal(s1);
Animal b = new Animal(s1);
System.out.println(a == b); // a跟b指向的是两个不同的实例所以是false
System.out.println(a.equals(b)); // a跟b不是同一个对象所以返回false
System.out.println(a.name == b.name); //比较的是这两个String类型的引用指向的都是常量池中的同一个”hspedu“,所以返回true
String s4 = new String("hspedu");
String s5 = "hspedu";
System.out.println(s1 == s4); //一个指向常量池,一个指向对象,所以返回false
System.out.println(s4 == s5); //false
String t1 = "hello" + s1; //两个字符串相加,其中包含字符串变量,则会返回一个新的String类型的对象
String t2 = "hellohspedu"; //直接在常量池中找到刚才创建的
System.out.println(t1.intern() == t2); //true
System.out.println(t1 == t2); //false,因为t1是一个对象,t2是指向常量池
}
}
class Animal {
String name;
public Animal(String name) {
this.name = name;
}
}
结果
常用类
1.Math类
/**
* @author 孙显圣
* @version 1.0
*/
public class Math_ {
public static void main(String[] args) {
//1.abs 绝对值
int abs = Math.abs(-9);
System.out.println(abs);
//2.pow 求幂
double pow = Math.pow(2, 10);
System.out.println(pow);
//3.ceil 向上取整,返回>=该参数的最小整数
double ceil = Math.ceil(3.1);
System.out.println(ceil);
//4.floor 向下取整,返回<=该参数的最小整数
double floor = Math.floor(3.8);
System.out.println(floor);
//5.round 四舍五入
long round = Math.round(-5000.67);
System.out.println(round);
//6.sqrt 求开方
double sqrt = Math.sqrt(9.0);
System.out.println(sqrt);
//求2-7的随机数
for (int i = 0; i < 10; i++) {
System.out.println(2 + (int) (Math.random() * 6)); //2 + 0到5就是2到7
}
}
}
2.System类
1.exit
代码
package system_;
/**
* @author 孙显圣
* @version 1.0
*/
public class System_ {
public static void main(String[] args) {
// exit 退出当前程序
System.out.println("1");
System.exit(0); //正常情况退出
System.out.println("2");
}
}
结果
2.arraycopy
参数解释
代码
package system_;
import java.util.Arrays;
/**
* @author 孙显圣
* @version 1.0
*/
public class System_ {
public static void main(String[] args) {
int[] src = new int[]{1,2,3};
int[] dest = new int[3];
System.arraycopy(src, 0, dest, 0, src.length); //从src数组的0位置复制到dest的0位置,复制src的所有元素
System.out.println(Arrays.toString(dest));
}
}
结果
3.currentTimeMillens
代码
package system_;
/**
* @author 孙显圣
* @version 1.0
*/
public class CurrentTimeMillens {
public static void main(String[] args) {
System.out.println(System.currentTimeMillis());
}
}
结果
3.大数处理方案
基本介绍
BigInteger类
介绍
- 在编程中,如果需要处理很大的整数,long不够用, 则交给BigInteger来处理
- 在对这个类进行操作的时候不能直接使用加减乘除的符号,要使用特定的方法
代码
package bignum;
import java.math.BigInteger;
/**
* @author 孙显圣
* @version 1.0
*/
public class BigInteger_ {
public static void main(String[] args) {
BigInteger bigInteger = new BigInteger("33333333333333333333333333333333333333333333333333333333333333");
System.out.println(bigInteger);
BigInteger bigInteger1 = new BigInteger("1111111111111111");
//加法
BigInteger add = bigInteger.add(bigInteger1);
//减法
BigInteger subtract = bigInteger.subtract(bigInteger1);
//乘法
BigInteger multiply = bigInteger.multiply(bigInteger1);
//除法
BigInteger divide = bigInteger.divide(bigInteger1);
System.out.println("add = " + add);
System.out.println("subtract = " + subtract);
System.out.println("multiply = " + multiply);
System.out.println("divide = " + divide);
}
}
结果
BigDecimal类
介绍
- 在编程中,如果需要处理很大的浮点数,double不够用,则交给BigDecimal来处理
- 在对这个类进行操作的时候不能直接使用加减乘除的符号,要使用特定的方法
- 在遇到除不开的数的时候可能会抛出异常,此时就增加参数,BigDecimal.ROUND_CEILING,就会截取与子类相同长度的精度
代码
package bignum;
import java.math.BigDecimal;
import java.math.RoundingMode;
/**
* @author 孙显圣
* @version 1.0
*/
public class BigDecimal_ {
public static void main(String[] args) {
BigDecimal bigDecimal = new BigDecimal("1999.123323213218888888");
BigDecimal bigDecimal1 = new BigDecimal("2");
//加法
BigDecimal add = bigDecimal.add(bigDecimal1);
//减法
BigDecimal subtract = bigDecimal.subtract(bigDecimal1);
//乘法
BigDecimal multiply = bigDecimal.multiply(bigDecimal1);
//除法
BigDecimal divide = bigDecimal.divide(bigDecimal1, BigDecimal.ROUND_CEILING); //添加参数,避免除不尽的情况
//输出这四个结果
System.out.println("add = " + add);
System.out.println("subtract = " + subtract);
System.out.println("multiply = " + multiply);
System.out.println("divide = " + divide);
}
}
结果
4.日期类
对于IDEA类图中的属性
如果有getter或者setter方法则表明这个方法后面的名字为属性
第一代日期类
代码
package date_;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @author 孙显圣
* @version 1.0
*/
public class Date01 {
public static void main(String[] args) throws ParseException {
Date date = new Date(); //获取当前系统时间
System.out.println("当前日期为:" + date);
Date date1 = new Date(1232134343); //通过毫秒数来确定时间,毫秒数加上1970年
System.out.println("日期为:" + date1);
//创建简单日期格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年 MM月 dd日 hh:mm:ss E");
String format = sdf.format(date); // 把当前日期格式化一下然后给一个字符串
System.out.println("格式化之后的日期为:" + format);
//把一个格式化的String转换成对应的Date
String s = "2024年 01月 01日 07:24:21: 星期一";
Date parse = sdf.parse(s); //这里会有异常的问题,直接alt + Enter抛出异常即可
System.out.println("转换后的日期为:" + parse);
}
}
结果
第二代日期类(Calendar)
基本介绍
- Calendar是一个抽象类,并且构造器是私有的
- 可以通过getInstance来获取实例
代码
package date_;
import java.util.Calendar;
/**
* @author 孙显圣
* @version 1.0
*/
public class Date02 {
public static void main(String[] args) {
Calendar c = Calendar.getInstance(); //获取当前日期
System.out.println("c = " + c);
//获取日历对象的某个日历字段
System.out.println("年:" + c.get(Calendar.YEAR));
System.out.println("月:" + (c.get(Calendar.MONTH)+ 1)); //加一的原因是这个月份是从0开始的
System.out.println("日:" + c.get(Calendar.DAY_OF_MONTH));
System.out.println("时:" + c.get(Calendar.HOUR));
System.out.println("分:" + c.get(Calendar.MINUTE));
System.out.println("秒:" + c.get(Calendar.SECOND));
//输出获取的时间的组合
System.out.println(c.get(Calendar.YEAR) + "年" + (c.get(Calendar.MONTH)+ 1) + "月" + c.get(Calendar.DAY_OF_MONTH) + "日" + c.get(Calendar.HOUR) + "时" + c.get(Calendar.MINUTE) + "分" + c.get(Calendar.SECOND) + "秒");
}
}
结果
第三代日期类
基本使用
package date_;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
/**
* @author 孙显圣
* @version 1.0
*/
public class Date03 {
public static void main(String[] args) {
LocalDateTime now = LocalDateTime.now(); //获取目前的时间
System.out.println(now);
//单独获取年月日,时分秒
System.out.println("年 = " + now.getYear());
System.out.println("月 = " + now.getMonth()); //英文的
System.out.println("月 = " + now.getMonthValue()); //中文的
System.out.println("日 = " + now.getDayOfMonth());
System.out.println("时 = " + now.getHour());
System.out.println("分 = " + now.getMinute());
System.out.println("秒 = " + now.getSecond());
LocalDate now1 = LocalDate.now(); //只可以获取年月日
LocalTime now2 = LocalTime.now(); //只可以获取时分秒
}
}
进阶使用
package date_;
import java.sql.Date;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
/**
* @author 孙显圣
* @version 1.0
*/
public class Date04 {
public static void main(String[] args) {
LocalDateTime now = LocalDateTime.now();
//格式化日期类
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); //设置格式
String format = dateTimeFormatter.format(now); //格式化
System.out.println(format);
//时间戳与Date之间的转换
Instant now1 = Instant.now(); //获取时间戳
System.out.println(now1);
java.util.Date from = Date.from(now1); //时间戳 - > Date
Instant instant = from.toInstant(); //Date - > 时间戳
//提供plus 和 minus方法来对当前时间进行加减
LocalDateTime localDateTime = now.plusDays(89); //当前时间加上89天
String format1 = dateTimeFormatter.format(localDateTime);
System.out.println(format1);
LocalDateTime localDateTime1 = now.minusMinutes(60); //当前时间减去60分钟
String format2 = dateTimeFormatter.format(localDateTime1);
System.out.println(format2);
}
}
5.章节练习
练习一
题目
代码
package homework11_;
/**
* @author 孙显圣
* @version 1.0
*/
public class HomeWork01 {
public static void main(String[] args) {
System.out.println("反转前:" + "abcdef");
String res = null;
try {
res = reverse("abcdef",1,1);
} catch (Exception e) {
System.out.println(e.getMessage()); //抛出异常后这里就可以抓住异常
System.exit(-1); //出异常之后,反转后的代码就没有必要继续执行了,所以直接返回
}
System.out.println("反转后:" + res);
}
public static String reverse(String str, int start, int end) {
//对参数做一个验证,将正确的写出来然后再取反就可以
if (!(str != null && start >= 0 && end > start && end < str.length())) {
throw new RuntimeException("参数不正确");
}
String s = str.substring(start, end + 1); //截取出来需要翻转的部分
char[] charArray = s.toCharArray();
char temp;
for (int i = 0; i <= charArray.length / 2 - 1; i++) { //进行反转
temp = charArray[i];
charArray[i] = charArray[charArray.length - i - 1];
charArray[charArray.length - i - 1] = temp;
}
String re = new String(charArray); //将反转好的部分转化成String类型
StringBuilder stringBuilder = new StringBuilder(str); //转换成StringBuilder进行字符替换
stringBuilder.replace(start, end + 1, re); //将反转好的部分进行替换
return stringBuilder.toString();
}
}
结果
练习二
题目
代码
package homework11_;
import java.util.Scanner;
/**
* @author 孙显圣
* @version 1.0
*/
public class HomeWork02 {
public static void main(String[] args) {
try {
judgement();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
public static void judgement() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入用户名:");
String username = scanner.next();
//进行检验
if (username.length() > 4 || username.length() < 2) {
throw new RuntimeException("用户名输入有误");
}
System.out.println("请输入密码:");
String password = scanner.next();
boolean res = true;
//判断是否都是数字
for (char c: password.toCharArray()) {
if (!Character.isDigit(c)) {
res = false;
}
}
if (!(res && password.length() == 6)) {
throw new RuntimeException("密码输入有误");
}
System.out.println("请输入邮箱:");
String mailbox = scanner.next();
int a = mailbox.indexOf('@');
int b = mailbox.indexOf('.');
if (!(a >= 0 && a < b)) {
throw new RuntimeException("邮箱输入有误");
}
}
}
结果
练习三
题目
代码
package homework11_;
import java.util.Scanner;
/**
* @author 孙显圣
* @version 1.0
*/
public class HomeWork03 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入人名,以空格分隔");
String s = scanner.nextLine();
String[] split = s.split(" "); //以空格分隔
char s2 = split[1].charAt(0); //取出第二个元素的首字母
String res = split[2].concat(",").concat(split[0]).concat(".").concat(String.valueOf(s2));
System.out.println(res);
}
}
结果
练习四
题目
代码
package homework11_;
import java.util.Scanner;
/**
* @author 孙显圣
* @version 1.0
*/
public class HomeWork04 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入字符串");
String str = scanner.next();
int big = 0;
int small = 0;
int number = 0;
int other = 0;
//按照ascii表来判断
char[] charArray = str.toCharArray();
for (char c:
charArray) {
if (c >= 'A' && c <= 'Z') {
big ++;
} else if (c >= 'a' && c <= 'z') {
small ++;
} else if (c >= '0' && c <= '9') {
number ++;
}else {
other ++;
}
}
System.out.println("大写:" + big + " 小写:" + small + " 数字:" + number + " 其余:" + other);
}
}
结果
练习五
题目
代码
package homework11_;
/**
* @author 孙显圣
* @version 1.0
*/
public class HomeWork05 {
public static void main(String[] args) {
String s1 = "hspedu";
Animal a = new Animal(s1);
Animal b = new Animal(s1);
System.out.println(a == b); // a跟b指向的是两个不同的实例所以是false
System.out.println(a.equals(b)); // a跟b不是同一个对象所以返回false
System.out.println(a.name == b.name); //比较的是这两个String类型的引用指向的都是常量池中的同一个”hspedu“,所以返回true
String s4 = new String("hspedu");
String s5 = "hspedu";
System.out.println(s1 == s4); //一个指向常量池,一个指向对象,所以返回false
System.out.println(s4 == s5); //false
String t1 = "hello" + s1; //两个字符串相加,其中包含字符串变量,则会返回一个新的String类型的对象
String t2 = "hellohspedu"; //直接在常量池中找到刚才创建的
System.out.println(t1.intern() == t2); //true
System.out.println(t1 == t2); //false,因为t1是一个对象,t2是指向常量池
}
}
class Animal {
String name;
public Animal(String name) {
this.name = name;
}
}