90%的人都不知道Scanner String 方法这样用
day13
方法重写
对于一个方法而言: 区分方法 通过方法名找方法 通过参数列表来确定方法
方法重写:
发生继承关系、实现关系 父类不满足子类的需求 子类重写父类中的方法
什么情况下会发生:
1:发生继承
2:方法名同名
3:参数列表要一模一样 (顺序 个数 类型)
4:子类的返回值类型<=父类的返回值类型(引用) 基本类型一模一样
5:子类的修饰符>=父类的修饰符 (父类中的修饰符不能是private)
6:子类抛出的异常<=父类抛出的异常 (理解:可以认为任意一个方法都会对外抛出运行时异常)
参一反小修大异小
main()
- public:保证能够调用到
- static:保证外界调用无需创建对象
- void: jvm无需返回值
- String[] args: 可以传入 调用main方法时 可以传入实际参数
常用类
Scanner
学习使用Scanner
- hasNextXXX 获取扫描到的数据是否是XXX类型
- nextXXX 获取下一个扫描到的内容转为XXX类型(转换过程中有可能存在问题)
重新创建Scanner对象 指定文件作为输入源
Scanner sc = new Scanner(new File(“C:\Users\wawjy\Desktop\a.txt”));
String
String:
字符串: 一组字符序列 (不可变的串)
创建String对象:
- new String();
- new String(“abc”);
- "love";
- new String(buf,2,2);//通过字节数组创建
常见方法
public class Test02 { public static void main(String[] args) { // 创建一个String对象 String str = "ilovejavaandlaoxue"; //charAt(int index); char ch = str.charAt(3); System.out.println("返回当前索引位置上的指定字符:"+ch); //codePointAt(index) int num = str.codePointAt(0); System.out.println("返回指定索引位置上元素的代码点:"+num); //compareTo(String) String cStr = "ilovejavaandlaoxu"; num = str.compareTo(cStr); System.out.println("比较两个字符串的大小:"+num); //compareToIgronCase(String) cStr = "ILOVEJAVAANDLAOXUE"; num = str.compareToIgnoreCase(cStr); System.out.println("比较两个字符串的大小(忽略大小写):"+num); //concat(String) cStr = "andgirl"; str = str.concat(cStr); System.out.println("拼接之后的结果是:"+str); //copyValueOf(char[]) char[] chs = new char[] {'i','l','o','v','e'}; str = String.copyValueOf(chs); System.out.println("创建新的字符串:"+str); str = String.copyValueOf(chs,1,4); System.out.println("创建新的字符串:"+str); str = "憨憨.avi"; boolean flag = str.endsWith(".avi"); System.out.println("str是否是.avi格式:"+flag); //getBytes byte[] buf = str.getBytes(); System.out.println("获取字符串的字节数组:"+Arrays.toString(buf)); //getChars(); chs = new char[10]; // 从str的2索引处开始 到str的第5个索引结束(不包含) 复制到chs字符数组中 从第1个位置开始 str.getChars(2,6, chs, 1); System.out.println("获取字符串的字符数组:"+Arrays.toString(chs)); //indexOf 返回负数代表未找到 str = "hehe.avi.png"; int index = str.indexOf("."); System.out.println(".在string中第一次出现的位置是:"+index); index = str.indexOf(100); System.out.println("e在string中第一次出现的位置是:"+index); index = str.indexOf(".",5); System.out.println(".在string中第5个索引位置开始计算,第一次出现的位置是:"+index); index = str.lastIndexOf("."); System.out.println(".在string中最后一次出现的位置是:"+index); //isEmpty() System.out.println("查看数组是否为null:"+str.isEmpty()); //repleace str = "hehe.avi.png"; str = str.replace(".", "+"); System.out.println("替换之后的结果:"+str); //splite: str = "login?unme=zs&pwd=zs"; String[] strs = str.split("\\?"); for(String string:strs) { System.out.println(string); } System.out.println("======"); String parms = strs[1]; strs = parms.split("&"); for(String string:strs) { String[] ss = string.split("="); System.out.println(ss[1]); } //subString str = "login?unme=zs&pwd=zs"; str = str.substring(4);// 从4索引开始截取到结束 System.out.println("截取字符串:"+str); str = str.substring(2, 7);//从2索引开始截取 到索引为7结束不包含7 System.out.println("截取字符串:"+str); //大小写转换 str = "login?unme=zs&pwd=zs"; str = str.toUpperCase(); System.out.println("转为大写:"+str); str = str.toLowerCase(); System.out.println("转为小写:"+str); //通过静态方法创建String对象 String str1 = String.valueOf(123); System.out.println(str1); //对象转字符串 其实就是调用当前对象的toString方法 User u = new User(10); String str2 = String.valueOf(u); System.out.println(str2); } } class User{ private int age; public User() { // TODO Auto-generated constructor stub } public User(int age) { super(); this.age = age; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "User [age=" + age + "]"; } }
StringBuffer
之所以能够可变的原因,底层就是一个字符数组,动态数组。
public class Test04 { public static void main(String[] args) { // 创建StringBuffer StringBuffer sb = new StringBuffer(); // 容量16 System.out.println("通过空构造器创建的StringBuffer的容量:"+sb.capacity()); //添加元素 sb.append(true); sb.append(false).append("123").append("134");// 链式编程 System.out.println(sb); System.out.println("当前sb对象中的字符串长度:"+sb.length()); //添加元素 sb.insert(1, "heihei"); System.out.println(sb); } }
StringBuilder
StringBuilder和StringBuffer 都继承了AbstractStringBuilder StringBuffer效率低于StringBuilder StringBuffer安全性要高于StringBuilder 一般情况下使用StringBuilder jdk9之后 String中存储数据通过byte数组存储 + 变量 jdk中对于String存储时的内容消耗极大降低
包装类
8大基本数据类型 -> 8个包装类
byte->Byte short->Short long ->Long float->Float double->Double boolean->Boolean
char ->Character int ->Integer
jdk12 Integer中的所有构造器都过时 通过valueOf方法获取int对应的Integer对象
- String->int Integer.parseInt();// 可能报异常
- int ->String String.valueOf()
jdk1.5之后支持自动拆装箱,本质上就是调用了
装箱:Integer.valueOf()
拆箱:对象.intValue()
9**
反之会重新创建一个新的Integer对象
public class Test02 { public static void main(String[] args) { Integer in1 = 123;//jdk1.5之后支持自动装箱 Integer.valueOf(123); int num = in1;//jdk1.5之后支持自动拆箱 in1.intValue(); Integer in2 = 88; Integer in3 = 88; System.out.println(in2==in3); in2 = 127; in3 = 127; System.out.println(in2==in3); } }
tips:
字面值创建Boolean对象时 只能指定true和false 并且创建的对象也是对应的true和false
字符串创建Boolean对象是 只要字符是true/false 无所谓大小写 得到对应的Boolean对象就是与之对应的true和false
其它所有字符串赋值都是false
时间Date
空构造器对象创建出的是当前系统时间对象
public class Test01 { public static void main(String[] args) { //创建Date对象 Date d = new Date(); System.out.println(d); //通过带参构造器创建对象 Date date = new Date(1563960432618L); System.out.println(date); System.out.println(d.after(date)); System.out.println(d.before(date)); //获取毫秒数 long dateTime = System.currentTimeMillis(); System.out.println(dateTime); } }
格式化输出时间:
public class Test02 { public static void main(String[] args) { //创建时间对象 Date date = new Date(); //创SimpleDateFormat对象 SimpleDateFormat sd = new SimpleDateFormat(); //设置一下输出的内容格式 sd.applyPattern("yyyy年MM月dd日 HH时mm分ss秒 是一年中的第D天 W w"); //调用格式化方法格式化日期 String str = sd.format(date); System.out.println(str); //创建对象并且指定格式化的内容 SimpleDateFormat ss = new SimpleDateFormat("yy/MM/dd hh:mm:ss"); System.out.println(ss.format(date)); } }
- Windows Mobile中实现Image.FromFile(string file)这样的方法
- Windows Mobile中实现Image.FromFile(string file)这样的方法
- “System.Web.Security.Roles.AddUsersToRole(string[], string)”最匹配的重载方法具有一些无效参数这样的错误?
- String.split()方法你可能不知道的一面
- Integer.valueOf(String)方法字符串转整型- 你肯定不知道的疑惑!
- java定义一个方法时,不知道传入的方法的数量,可以这样定义
- String.split()方法你可能不知道的一面
- 你不知道的Java笔记9--解读main()方法中的String[] args
- 这样吃橙子才最健康,90%的人不知道的秘密!
- 原来IC是这样设计的,竟然90%的人都不知道!
- 对数字段进行排序,String,Integer,Arrays,ArrayList,Scanner
- void prinT(Test *pT)//这个函数 这里为什么要用 我完全可以用t3.print()这样来调用类里面函数方法就可以,为何多此一举来这样一步???
- 别再用中国人的方法背英语单词了,英国人是这样背.快转吧,老好了,错过这儿村没儿这店儿
- 你不知道的JavaScript用法,Hacker是这样写JS的
- (null) entry in command string: null chmod 0700的解决方法
- JavaScript String 对象扩展方法
- String类型的属性和方法(一)
- String常用方法概述
- string类型常用方法总结
- JSON数据转换方法 parse()和stringify()