南浔建设网站,企业展厅设计图片,电商和网站设计哪个好,长沙企业关键词优化服务质量Day7 字符串与键盘输入 字符串作为所有程序都很重要的东西#xff0c;这个东西必须好好的学习#xff0c;在Java中String会比较好学习#xff0c;比起C和C里面会更加的简单#xff0c; 在Java之中也是很好理解的#xff0c;因为底层已经封装好了char数组#xff0c;也就是…Day7 字符串与键盘输入 字符串作为所有程序都很重要的东西这个东西必须好好的学习在Java中String会比较好学习比起C和C里面会更加的简单 在Java之中也是很好理解的因为底层已经封装好了char数组也就是字符串 第一章 字符串
字符串的声明非常的简单只需要使用使用String这个类作为数据类型即可 String name XingZai String这个类是特殊的类可以直接写值而不需要使用new关键字这是在jdk1.2版本开始就优化了这个可以直接写了但是还是保留着的而且是不一样的待会就稍微浅讲一下。
还记得我之前所说的使用new就相当于是创建对象然后这个对象直接丢入打印里面就是直接调用这个对象的 toString() 这个方法但是我们来看方法名是不是 to String转换到String类型但是我们的String本来就是String是吧所以String的toString() 其实就是打印自身直接上代码
public class Hello {public static void main(String[] args) {String name 123123;System.out.println(name);}
}感觉这个没有什么好说的还是非常简单的声明是这样然后就是我们之前讲过的拼接字符串使用 号在数字和数字之间是计算但是在字符串和其他面前就是拼接了可以拼接的又但不限于数字布尔值和对象因为如果拼接对象的话会自动调用这个对象的toString() 方法也就是那个 类hashCode
public class Hello {public static void main(String[] args) {String s 123123 true;System.out.println(s: s);String s2 Hello: new Hello();System.out.println(s2);}
}接下来我们来自定义一下这个toString方法比如现在我们使用的是Hello类的对象那我们直接写就行了
public class Hello {public static void main(String[] args) {System.out.println(new Hello());}//toString方法是一个返回String类型的方法我们只需要在返回值上加上就行public String toString() {return Hello类 123;}
}欧克接下来我们来讲讲jdk1.1及之前的使用new关键字创建String对象的方法和我们现在直接写String的方法有什么区别。这个时候我们还需要知道一个方法这个是所有的类都有的这么一个方法除了toString() 之外都有的这么一个方法那就是hashCode() 之前我也说过了在Java中地址的显示都是通过hashCode的方式来显示了所以我们的这个 hashCode()这个方法就是获取他的hashCode
public class Hello {public static void main(String[] args) {//传统创建对象的方式来创建String类的对象String s new String(123);String s1 123;System.out.println(s: s);System.out.println(s1: s1);System.out.println(s: s.hashCode());System.out.println(s1: s1.hashCode());boolean b s s1;System.out.println(s s1: b);if (!b)System.out.println(哈希值是不是一样但是让他判断竟然是false);Hello hello new Hello();Hello hello1 hello;System.out.println(hello: hello);System.out.println(hello1: hello1);System.out.println(hello1 hello);}
}是不是感到了深深的疑惑同样的hashCodeHello类的对象就是相等但是同样hashCode的字符串竟然不是相等你们先别急我来慢慢道来这个时候就需要画个图了请出灵魂画手s1这个对象是怎么指的 (了解Java内存的先别喷现在还不分开来说无论常量池堆还是方法区等等现在都统一叫做内存空间) 我们再来看看s这个对象是怎么指的 所以比对才是不一样的hello和hello1一样的是因为他们都是指向原hello这个对象我们的s打印的其实可以理解为toString的hashCode还是追去 123去取hashCode了但是实际比对比的还是 123和s在内存中的映射咱们直接来看源码
拿的都是底层的字符数组来计算的所以hashCode才会一样实际上就是我画的图的那样的指向
这个就是字符串的难题了剩下的就是很简单的调用一下String这个类的方法因为直接写的字符串就是String这个类的对象所以直接使用 .方法() 的操作就行
public class Hello {public static void main(String[] args) {/*在String类中还是有很多方法的有很多实用的方法比较常用的比如length,isEmpty,equals,toCharArray,split,indexOf,replace,toUpperCase,toLowerCase,trim*///第一个length顾名思义就是长度String s1 123456;System.out.println(s1.length(): s1.length());System.out.println();//第二个isEmpty顾名思义是空如果真的空就会返回true如果不是那就返回false//这个\是转义字符待会会讲现在在讲String类的APISystem.out.println(\123\.isEmpty() 123.isEmpty());System.out.println(\\.isEmpty() .isEmpty());System.out.println();//第三个equals就是相等的意思这个是比对字符串用的因为使用比对的其实是hashCodeSystem.out.println(equals() new String(123).equals(123));System.out.println();//第四个toCharArray就是转换char数组String s2 123456;char[] charArray s2.toCharArray();for (char c : charArray) {System.out.print(c );}System.out.println();System.out.println();//第五个split的意思是切割根据给的参数切割字符串String s3 123 456 789;String[] strings s3.split( );for (String str : strings) {System.out.println(str);}System.out.println();//第六个indexOf 下标String s4 123456;int i s4.indexOf(3);System.out.println(index: i);System.out.println();//第七个replace 重新放置String s5 123456;String replace s5.replace(1, 4);System.out.println(replace: replace);System.out.println();//第八个toUpperCase 大写转换System.out.println(abc.toUpperCase());System.out.println();//第九个toLowerCase 小写转换System.out.println(QWE.toLowerCase());System.out.println();//第十个trim 去除前后空格System.out.println( 123123 456456 .trim());}
}我话先说在前头这个东西不用死记用到就记住了前提稍微学好一点英语以后上ide之后直接翻结构来查看用方法。
接下来就是我上个代码里面要讲的一个知识点转义符在Java中的转义符是有很多的比如有 \n,\r,\,\,\\,\t 等等有很多我就举这几个例子还有更多的可以去查看ascii码的表里面其实是有的
public class Hello {public static void main(String[] args) {//\n 换行这个很熟悉因为在println的末尾会自动添上这么一个当然也可以手动添加System.out.println(123\n123456);System.out.println();//\r 这个是做回车作用的单个时候就是回到这一行的开头System.out.println(123456\r456);System.out.println(以上是发生了替换);System.out.println();//\t 制表符的打印System.out.println(123\t123);System.out.println();//\\,\,\ 这个就是转义了就是直接打印//因为默认的双引号就是字符的开头和结尾你想要在字符串里面有双引号就需要转义//然后反斜杠本来就是转移符所以需要转义才能打印出来//还有一个就是单引号在字符串里面其实可以直接使用但是在其他语言中不一样//比如python他无论单引号还是双引号都是字符串所以这个就需要用到转义//但是在java中如果是你字符串那你就不需要转义了因为单引号没有阻碍任何东西System.out.println(\\,\,\);}
}字符串还有一个内容那就是可以通过字符串转换其他类型这个会在之后的常用类里面讲到不少方法是放在包装类里的之后学会了包装类之后那就是真的完全拿捏了字符串了
字符串暂时就先讲这么多内容了只要你都会了就说明你对字符串了如指掌了那对 System.out.println() 用起来会更加的得心应手
第二章 键盘输入 我们进行开发自然少不了要输入首先我们想要输入需要引入一个东西在我们说数组的时候其实已经讲解过什么是引入那就是import在我们使用这个输入类的时候我们就需要引入一下这个类就和数组工具Arrays一样 首先我们先说这个类在哪里这个类在java.util.Scanner没错这个类就叫做Scanner然后我们引入了这个类就可以创建这个类的对象并进行使用了
import java.util.Scanner;public class Hello {public static void main(String[] args) {//我们先来创建对象这次我们需要在括号里添加东西了Scanner scanner new Scanner(System.in);//scanner内有多种方法我们根据需要选择对应的方法比如我们要输入int类型那就使用nextIntSystem.out.println(请输入:);int i scanner.nextInt();System.out.println(i);}
}我们使用了之后会出现光标卡住这里其实就是在等待我们输入了然后我们直接输入数字因为我们使用的是int类型的键入 这样就完成了我们的输入那如果你不想输入数字的话输入了别的然后代码里面写的是nextInt的话那就会报错
这样就会报错因为我们的nextInt只能接受int类型的输入输入其他的就会报这样的错误说是 输入类型适配错误异常所以我们只需要调整代码或者是外部的输入就不会报错了
我们可以使用的方法有但不限于这张图里面显示的方法 然后我们可以依次类推是不是看到了除nextInt之外的nextDoublenextFloat等等其实都是获取对应类型的值的我们还有特殊的两个一个是next() 一个是nextLine他们分别为空格结尾和回车作为结尾然后返回的都是字符串类型
import java.util.Scanner;public class Hello {public static void main(String[] args) {Scanner scanner new Scanner(System.in);System.out.println(请输入:);String next scanner.next();System.out.println(next);}
}就和我说的一样从空格开始就隔断了
import java.util.Scanner;public class Hello {public static void main(String[] args) {Scanner scanner new Scanner(System.in);System.out.println(请输入:);String next scanner.nextLine();System.out.println(next);}
}使用Line的时候就是在一行结束之后也就是碰到回车了之后才隔断
import java.util.Scanner;public class Hello {public static void main(String[] args) {Scanner scanner new Scanner(System.in);System.out.println(请输入:);for (int i 0; i 2; i) {String next scanner.next();System.out.println(next);}}
}我们明显可以看到空格自动隔开如果后面还有获取或者循环了一下这个获取还是能获取到的所以我们可以使用这种方式进行数组的输入啊等等因为intdoublefloat等等都是和next是一样的只有nextLine是特殊的。