写在前面
Hello大家好, 我是【麟-小白】,一位软件工程专业的学生,喜好计算机知识。希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正!谢谢大家!!!
如果小哥哥小姐姐们对我的文章感兴趣,请不要吝啬你们的小手,多多点赞加关注呀!❤❤❤ 爱你们!!!
目录
写在前面
判断输出结果
String s = new String("xyz");创建了几个String Object
Math.round(11.5)等于多少? Math.round(-11.5)等于多少
是否可以继承String类
String与StringBuffer的区别
一、判断题
1.用运算符“==”比较字符串对象时,只要两个字符串包含的是同一个值,结果便为 true。(×)
2.String 类字符串在创建后可以被修改。(×)
3.方法 replace (String srt1, String srt2)将当前字符串中所有 srt1 子串换成 srt2子串。(√)
4.方法compareTo在所比较的字符串相等时返回 0。(√)
5.方法IndexOf((char ch,-1)返回字符ch在字符串中最后一次出现的位置。(×)
6.方法startsWith()判断当前字符串的前缀是否和指定的字符串一致。(√)
二、选择题
1.下面哪个选项正确地声明了一个字符串数组:(c)
2. 请看下面的程序段:(D)
3.已知 String 对象 s="abcdefg",则s.substring(2, 5)的返回值为__B__。
4.请看下面的代码 String s = “people”; String t = “people”; String c[ ] = {“p”,”e”,”o”,”p”,”l” ,”e”};
5.已知 s 为一个 String 对象,s="abcdefg",则s.charAt(1)的返回值为__B__。
6.请看下面的代码 String s = “good”; 下面选项语句书写正确的是:(AD)
7.正确创建一个含有 5 个元素的字符串数组的选项是:(AB)
8.请看下面的代码
Math.round(11.5)和Math.round(-11.5)的值是多少?
String str = new String(“hello”);创建了哪些对象?
如何将String类型转化Number类型?举例说明String str = “123”;
三、填空题
1.已知sb为StringBuffer的一个实例,且sb= "abcde ",则sb.reverse()后sb的值为_"edcba" _。
2.已知sb为StringBuffer的一个实例,且sb= "abcde ",则sb.delete(1,2)后sb的值为 _"acde "_。
四、编程题
1.请编写一个 Application 实现如下功能:接受命令行中给出的一个字母串,先将该串原样输出,然后判断该串的第一个字母是否为大写,若是大写则统计该串中大写字母的个数,并将所有大写字母输出;否则输出信息串”第一个字母不是大写字母!”。
2.一个应用程序,接受用户输入的一行字符串,统计字符个数,然后反序输出。
3.创建BigDecimalDemo类,在类中分别定义add(),sub(),mul()和div()方法实现加、减、乘、除运算,并输出运算结果。要求除法,可以处理商的精度。
4.编写一个Java应用程序,从键盘读取用户输入两个字符串,并重载3个函数分别实现这两个字符串的拼接、整数相加和浮点数相加。要进行异常处理,对输入的不符合要求的字符串提示给用户,不能使程序崩溃。
5. 模拟一个trim方法,去除字符串两端的空格。
6. 将一个字符串进行反转。将字符串中指定部分进行反转。比如将“abcdefg”反转为”abfedcg”
7. 获取一个字符串在另一个字符串中出现的次数。判断str2在str1中出现的次数
8. 获取两个字符串中最大相同子串。
9. 对字符串中字符进行自然顺序排序
10. 中国有句俗语叫“三天打鱼两天晒网”。如果从1990年1月1日起开始执行“三天打鱼两天晒网”。如何判断在以后的某一天中是“打鱼”还是“晒网”?
15. 求两个日期之间相隔的天数
16.编写java程序,随便输入两个单词,两个单词之间以空格隔开,输出时每个单词的首字母变为大写。如输入:“hello java”,输出为“Hello Java”
17.求出“hijavahehejavahejava”字符串里面包含几个“java字符串。”
18.输出字符串"ddejidsEFALDFfnef2357 3ed"里的大写字母数,小写英文字母数,非英文字母数
19.输入一句5个字的话,然后将它逆序输出。例如:
结语
【常用类知识精讲】
一文带你深入理解【Java基础】· 常用类(下)
一文带你深入理解【Java基础】· 常用类(上)字符串相关类
public void testString() {
String str1 = "尚硅谷";
String str2 = "尚硅谷";
String str3 = new String("尚硅谷");
System.out.println(str1 == str2);//true
System.out.println(str1 == str3);//false
System.out.println(str1.equals(str3));//true
str1 = "尚硅谷atguigu.com";
String str4 = "atguigu.com";
String str5 = "尚硅谷" + "atguigu.com";
System.out.println(str1 == str5);//true
String str6 = (str2 + str4).intern();
System.out.println(str1 == str6);//false ---->true
}
答:两个,一个字符对象,一个字符对象引用对象
答: Math.round(11.5)==12;Math.round(-11.5)==-11;round方法返回与参数最接近的长整数,参数加1/2后求其floor
答:String类是final类故不可以继承
答:String的长度是不可变的,StringBuffer的长度是可变的。如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法
知识点:用运算符“==”比较字符串对象,实际上是比较并确定它们是否为内存中的同一个对象。
知识点:String 类字符串对象是常量,在创建后不能修改。
知识点:String 类的方法 replace(String srt1, String srt2)用字符串 srt2 的内容替换当前字符串中遇到的所有 srt1 子串。
知识点:不仅如此,如果调用compareTo的字符串比作为参数的字符串小,则返回一个负数;如果调用compareTo的字符串比作为参数的字符串大时,则返回一个正数。
知识点:方法lastIndexOf((char ch)返回字符ch在字符串中最后一次出现的位置。
知识点:startsWith(prefix)方法判断当前字符串的前缀是否和指定的字符串 prefix 一致,如果一致,返回 true,否则返回 false。
A char str[]
B char str[][]
C String str[]
D String str[10]
知识点:声明数组时,不允许在数组名后面的括号内指定数组元素的个数。
public class class1 {
public static void main(String a[]) {
int x[] = new int[8];
System.out.println(x[1]);
}
}
当编译和执行这段代码时会出现:
A 有一个编译错误为“possible reference before assignment”
B 有一个编译错误为“illegal array declaration syntax”
C 有异常出现为“Null Pointer Exception”
D 正确执行并且输出 0
知识点:一旦数组被创建则它的元素就被初始化为 0
A "bcde"
B "cde"
C "cdef"
D "def"
知识点:substring(begpos, endpos)取出一个子串,该子串从begpos位置起至 endpos-1为结束。
下面哪一选项的语句返回值为真:(ACD)
A s .equals(t);
B t .equals(c);
C s==t;
D t .equals(new String(“people”));
E t==c;
知识点:s 和 t 不是相同的引用,而在使用==比较引用时,如果两个引用指向内存中的同一个对象,则结果为真。
A a
B b
C f
D g
知识点:字符串中第一个字符的 index 取值是 0。
A s += “student”;
B char c = s[1];
C intlen = s .length;
D String t = s.toLowerCase( );
知识点:s 是字符串不是数组,因此 B 错误;C 错误是由于 length 后要加括号。
A String s[ ] = new String[5]; for(int i=0;i<5;s[i++]=“”);
B String s[ ]={“”, “”, “”, “”, “”};
C String s[5];
D String [5]s;
知识点:每个数组元素在初始化之前都为 null。
public class class1 {
String str = new String("Girl");
char ch[] = {'d', 'b', 'c'};
public static void main(String args[]) {
class1 x = new class1();
x.change(x.str, x.ch);
System.out.println(x.str + " and " + x.ch[0] + x.ch[1] + x.ch[2]);
}
public void change(String str, charch[]) {
str = "Boy";
ch[0] = 'a';
}
}
该程序的输出结果是:(D)
A Boy and dbc
B Boy and abc
C Girl and dbc
D Girl and abc
知识点:由于 change(String str,char ch[ ]) 中str为值参数,所以str=”Boy”的结果不会影响实际参数。
Math.round(11.5):12
Math.round(-11.5):-11
字符串常量池中有一个对象,堆中有一个字符串对象。
答任意一个都对:
Integer num1 = new Integer(str);
或
int num2 = Integer.parseInt(str);
或
Integer num3 = Integer.valueOf(str);
知识点:reverse() 反转当前字符串。
知识点:delete(begpos, endpos)删除当前StringBuffer对象中自begpos位置起,到endpos-1位置止的子字符串。
答案:
public class TestChar {
public static void main(String args[]) {
int count = 0;
if (args.length != 0) {
System.out.println(args[0]);
if ((int) args[0].charAt(0) >= 65 && (int) args[0].charAt(0) <= 90) {
for (int i = 0; i = 65 && (int) args[0].charAt(i) <= 90) {
System.out.print(args[0].charAt(i));
count++;
}
}
System.out.println();
System.out.println("共有 " + count + " 个大写字母。");
} else
System.out.println("第一个字母不是大写字母!");
} else
System.out.println("请给出命令行参数!");
}
}
public class TestString {
public static void main(String args[]) {
String str;
str = args[0];
int j = str.length();
System.out.println(str + " " + j);
for (int i = j - 1; i >= 0; i--) {
System.out.print(str.charAt(i) + " ");
}
}
}
import java.math.BigDecimal;
public class BigDecimalDemo {
static final int location = 10;
/**
* 这个类提供精确的浮点数运算
*/
public static BigDecimal add(double value1, double value2) {
BigDecimal b1 = new BigDecimal(Double.toString(value1));
BigDecimal b2 = new BigDecimal(Double.toString(value2));
return b1.add(b2);
}
public static BigDecimal sub(double value1, double value2) {
BigDecimal b1 = new BigDecimal(Double.toString(value1));
BigDecimal b2 = new BigDecimal(Double.toString(value2));
return b1.subtract(b2);
}
public static BigDecimal mul(double value1, double value2) {
BigDecimal b1 = new BigDecimal(Double.toString(value1));
BigDecimal b2 = new BigDecimal(Double.toString(value2));
return b1.multiply(b2);
}
/*
* 提供精确的除法运算当除不尽时,精确到小数点后10位,以后的数字四舍五入
*/
public static BigDecimal div(double value1, double value2) {
return div(value1, value2, location);
}
/*
* @param b 表示需要精确到小数点以后的位数
*/
public static BigDecimal div(double value1, double value2, int b) {
if (b < 0) {
System.out.println("b值必须大于等于0");
}
BigDecimal b1 = new BigDecimal(Double.toString(value1));
BigDecimal b2 = new BigDecimal(Double.toString(value2));
return b1.divide(b2, b, BigDecimal.ROUND_HALF_UP);
}
public static void main(String[] args) {
BigDecimalDemo b = new BigDecimalDemo();
System.out.println("两个数字相加结果:" + b.add(-7.5, 8.9));
System.out.println("两个数字相减结果:" + b.sub(-7.5, 8.9));
System.out.println("两个数字相乘结果:" + b.mul(-7.5, 8.9));
System.out.println("两个数字相除结果,结果小数后保留10位:" + b.div(10, 2));
System.out.println("两个数字相除,结果保留小数后5位:" + b.div(-7.5, 8.9, 5));
}
}
//只能输入数字型的字符串,如果含字母会报错,需要用到正则表达式。这里没有体现。
import java.io.*;
public class Test1 {
public static void main(String args[]) {
String s1 = null, s2 = null, ss = null, si = null, sf = null;
int i1 = 0, i2 = 0;
float f1 = 0.0f, f2 = 0.0f;
BufferedReader strin = new BufferedReader(new InputStreamReader(System.in));
try {
System.out.print("输入第一个字符串:");
s1 = strin.readLine();
System.out.print("输入第二个字符串:");
s2 = strin.readLine();
} catch (Exception e) {
System.out.println(e.getMessage());
}
i1 = Integer.parseInt(s1);
i2 = Integer.parseInt(s2);
f1 = Float.parseFloat(s1);
f2 = Float.parseFloat(s2);
ss = strAdd(s1, s2);
si = strAdd(i1, i2);
sf = strAdd(f1, f2);
System.out.println("输入的二个字符串相加结果为:" + ss);
System.out.println("输入字符串转换为整数相加结果为:" + si);
System.out.println("输入字符串转换为浮点数相加结果为:" + sf);
}
static String strAdd(String str1, String str2) {
return str1 + str2;
}
static String strAdd(int int1, int int2) {
return String.valueOf(int1 + int2);
}
static String strAdd(float flt1, float flt2) {
return String.valueOf(flt1 + flt2);
}
}
public static String myTrim(String str) {
int start = 0;
int end = str.length() - 1;
while(start < end && str.charAt(start) == ' ') {
start++;
}
while(start < end && str.charAt(end) == ' ') {
end--;
}
if(start == end) {
return "";
}
return str.substring(start, end + 1);
}
拓展:I am a student! 写一个方法:实现输出 !student a am I
方式一:
public static String reverseString(String str, int start, int end) {
char[] c = str.toCharArray();// 字符串--->字符数组
return reverseArray(c,start,end);
}
public static String reverseArray(char[] c, int start, int end) {
for(int i = start, j = end; i < j; i++, j--) {
char temp = c[i];
c[i] = c[j];
c[j] = temp;
}
// 字符数组--->字符串
return new String(c);
}
方式二:
public static String reverseString1(String str, int start, int end) {
String str1 = str.substring(0, start);
for(int i = end; i >= start; i--) {
char c = str.charAt(i);
str1 += c;
}
str1 += str.substring(end + 1);
return str1;
}
public int getCount(String mainStr, String subStr) {
int mainLength = mainStr.length();
int subLength = subStr.length();
int count = 0;
int index = 0;
if (mainLength >= subLength) {
while ((index = mainStr.indexOf(subStr, index)) != -1) {
count++;
index += subLength;
}
return count;
} else {
return 0;
}
}
public static List getMaxSubString(String str1, String str2) {
String maxStr = (str1.length() > str2.length()) ? str1 : str2;
String minStr = (str1.length() < str2.length()) ? str1 : str2;
int len = minStr.length();
List list = new ArrayList<>();
for(int i = 0; i < len; i++) {
for(int x = 0, y = len - i; y <= len; x++, y++) {
String str = minStr.substring(x, y);
if(maxStr.contains(str)) {
list.add(str);
}
}
if(list.size() != 0){
return list;
}
}
return null;
}
public static String sort(String str) {
char[] c = str.toCharArray();
Arrays.sort(c);
return new String(c);
}
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class GetFish {
public static void main(String[] args) {
String date1 = "1990/1/1"; // 开始“三天打鱼两天晒网”的日期
String date2 = "1990/1/10"; // 手动输入的日期
long day = getQuot(date1, date2);// 传入值计算时间差
if (day % 5 == 0 || day % 5 == 4) {
System.out.println("今天是休息日,可以晒晒网");
} else {
System.out.println("今天要工作,打鱼了!");
}
}
public static long getQuot(String time1, String time2) {
long dayDistance = 0;
SimpleDateFormat ft = new SimpleDateFormat("yyyy/MM/dd");
try {
Date date1 = ft.parse(time1);
Date date2 = ft.parse(time2);
dayDistance = date2.getTime() - date1.getTime();
dayDistance = dayDistance / 1000 / 60 / 60 / 24 + 1;
} catch (ParseException e) {
e.printStackTrace();
}
return dayDistance;
}
}
写一个方法(例如:fun3("2010-09-20","2010-09-21") ),求输入的字符串2010-09-20 与 2010-09-21 之间相隔的天数
public class Time {
public static void main(String[] args) throws ParseException {
SimpleDateFormat sp = new SimpleDateFormat("yyyy-MM-dd");
Time.fun(sp);
}
public static void fun(SimpleDateFormat sp) throws ParseException {
Scanner sc = new Scanner(System.in);
System.out.println("请输入开始日期:(格式:2010-09-20)");
String sta = sc.next();
System.out.println("请输入结束日期:(格式:2010-09-20)");
String en = sc.next();
//开始日期
Date startTime = sp.parse(sta);
//结束日期
Date endTime = sp.parse(en);
String start = Utility.dateToSrting(startTime, "yyyy年MM月dd日");
String end = Utility.dateToSrting(endTime, "yyyy年MM月dd日");
//中间相差
long betweenTime = (endTime.getTime() - startTime.getTime()) / (1000 * 60 * 60 * 24);
System.out.println(start + "\t到\t" + end + "\t共相差:" + betweenTime + "天");
}
}
public class Test {
public static void main(String args[]) {
try {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String s = in.readLine();
StringBuffer s1 = new StringBuffer();
StringTokenizer st = new StringTokenizer(s);
while (st.hasMoreTokens()) {
String str = st.nextToken();
char c = (str).charAt(0);
if (c >= 'a' && c <= 'z') {
c = (char) ((int) c - 32);
s1.append(c);
} else
s1.append(c);
for (int i = 1; i < (str).length(); i++) {
char c1 = (str).charAt(i);
s1.append(c1);
}
s1.append(" ");
}
System.out.print(" " + s1.toString());
} catch (IOException e) {
System.out.println(e);
}
}
}
String s = "hijavahehejavahejajavavajava";
String findStr = "java";
int javaCount = 0;
for(int i = 0; i <= s.length() - findStr.length(); i++) {
if(s.substring(i, i+findStr.length()).equalsIgnoreCase(findStr)) {
javaCount++;
}
}
public class Classify {
public static void main(String args[]) {
String str = "ddejidsEFALDFfnef2357 3ed";
char c[] = str.toCharArray();
int count1 = 0, count2 = 0, count3 = 0;
for(int i = 0; i <= str.length() - 1;i++){
if(c[i] >= 'A' && c[i] <= 'Z'){
count1++;
}
else if(c[i] >= 'a' && c[i] <= 'z') {
count2++;
}
else {
count3++;
}
}
System.out.println("大写字母数:"+count1);
System.out.println("小写字母数:"+count2);
System.out.println("非英文字母数:"+count3);
}
}
原数组:我爱你中国
逆序输出:国中你爱我
public class Test {
public static void main(String[] args) {
char[] arr = new char[]{'我', '爱', '你', '中', '国'};
for (int i = 0, j = arr.length - 1; i < j; i++, j--) {
char temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
System.out.println(arr);
}
}
结语
本人会持续更新文章的哦!希望大家一键三连,你们的鼓励就是作者不断更新的动力