String字符串
-
字符串的基础
String类
Java将与字符串相关的功能进行了面向对象,形成了对象的类----字符串类,表示方法""。
-
不可变字符串的常用方法
- String:字符串本身不能发生改变,与指向字符串的引用无关.
-
直接使用"",创建的不可变字符串
-
对于不可变字符串本身是一个常量,保存在常量区.是存储在了堆区中一块儿特殊的区域里.
-
字符串常量的特点:同一个字符串常量在常量区只允许存储一个.
-
- 常用方法(判断)
String s = "1000phone"; //判断是否包含一个子字符串 //boolean contains(CharSequence s) System.out.println(s.contains("1000"));//true //判断两个字符串的内容是否相同 //boolean equals(Object anObject) System.out.println(s.equals("1000"));//false //忽略大小写判断两个字符串的内容是否相同 //boolean equalsIgnoreCase(String anotherString) System.out.println(s.equalsIgnoreCase("1000PHone"));//true //判断是否以某字符串开头 //boolean startsWith(String prefix) System.out.println(s.startsWith("1000"));//true //判断是否以某字符串结尾 //boolean endsWith(String suffix) System.out.println(s.endsWith("phone"));//true
- 常用方法(转换)
//1:使用构造方法 //String(char[] value) //String(char[] value, int offset, int count) char[] arr = {'p','h','o','n','e'}; String string1 = new String(arr); String string2 = new String(arr, 2, 3); System.out.println(string1+" "+string2); //将字符串转成字符数组 //char[] toCharArray() char[] arr1 = s.toCharArray(); System.out.println(arr1+" "+arr); //将字节数组转成字符串 //String(byte[] bytes) //String(byte[] bytes, int offset, int length) //String(byte[] bytes, String charsetName)//使用指定的编码将字节数组转换成字符成 byte[] bytes = {97,98,99,100}; String string3 = new String(bytes); System.out.println(string3); //将字符串转成字节数组 //byte[] getBytes() byte[] bytes1 = string3.getBytes(); System.out.println(bytes1[0]); //将基本数据类型转换成字符串 //String.valueOf() String string4 = String.valueOf(true); System.out.println(string4);
- 常用方法(替换)
//将基本数据类型转换成字符串 //String.valueOf() String string4 = String.valueOf(true); System.out.println(string4); //子串: //String substring(int beginIndex) //String substring(int beginIndex, int endIndex) //包含起始位置,不包含结束位置,到结束位置的前一位 String string6 = "http://www.baidu.com:80/a/b/a/a?name=bing&age=18"; String subString1 = string6.substring(7); String subString2 = string6.substring(7,20); System.out.println(subString2); String string7 = " 1000 phone "; //将字符串两端的空格去掉 //只能去除两边的,中间的不能去 //String trim() String string7 = " 1000 phone "; System.out.println(string7.trim()+"haha"); //按字典顺序比较两个字符串 /* * 字典顺序:按照ASCII表比较当前的两个字符,ASCII码大的认为是大的字符 * 规则:从左边第一个字符开始比较 * 如果当前的字符不相同,直接认为ASCII大的字符串是大字符串,后面的字符停止比较 * 当前字符比较的具体规则:使用前面的字符-后面的字符,返回差值.如果是负数,说明前面的字符串小于后面的.反之前面的大. * 如果当前的字符相同,再去比较第二个字符,依次往后推,如果比到最后都相同,则认为两个字符串相等,差值返回0. */ //int compareTo(String anotherString) int value = s.compareTo("1000PHone"); System.out.println(value);
常用方法(切割)
//被作为刀的子字符串不会再被作为内容. String string8 = "a,b,c,d,e,f"; String[] strings = string8.split(","); for (int i = 0; i < strings.length; i++) { System.out.println(strings[i]); } String string9 = "1.0.0.0.p.h.o.n.e"; String[] strings1 = string9.split("\\.");//默认.是任意字符的意思,\\.将它转义成普通的. for (int i = 0; i < strings1.length; i++) { System.out.println("strings1:"+strings1[i]); }
-
可变字符串的常用方法
- 字符串缓冲区.StringBuffer/StringBuilder:字符串本身可以发生变化,与指向可变字符串的引用无关
- StringBuffer:出现在jdk1.0,是线程安全的,考虑了线程安全问题
- StringBuilder:出现在jdk1.5,是线程不安全的,没有考虑线程安全问题
- 在不考虑线程安全问题时,尽量使用StringBuilder,因为速度快,效率高
StringBuffer sBuffer = new StringBuffer("1000phone");
-
代码实例
public class Demo3 { public static void main(String[] args) { StringBuffer sBuffer = new StringBuffer(); //1.存储: //StringBuffer append(boolean b) 从最后插入 sBuffer.append("1000"); sBuffer.append("phone"); System.out.println(sBuffer); //StringBuffer insert(int offset, boolean b) 从指定位置插入 sBuffer.insert(4, true); System.out.println(sBuffer); //2.删除: //StringBuffer delete(int start, int end) 删除一部分字符串 //StringBuffer deleteCharAt(int index) 删除一个字符 System.out.println(sBuffer.delete(4, 8)); //3.修改: //StringBuffer replace(int start, int end, String str) 替换指定的子字符串 //void setCharAt(int index, char ch) 修改一个字符 //4.获取: //char charAt(int index) System.out.println(sBuffer.charAt(0)); //返回指定子字符串的下标 从左到右 //int indexOf(String str) System.out.println(sBuffer.indexOf("phone")); //int indexOf(String str, int fromIndex) System.out.println(sBuffer.indexOf("phone",7)); //int lastIndexOf(String str) //返回指定子字符串(从右边开始计数)在此字符串第一次出现时的索引 //int lastIndexOf(String str, int fromIndex) //返回指定子字符串(从右边开始计数,范围:当前指定的位置-0)在此字符串第一次出现时的索引 //int length() //返回长度(字符数)。 System.out.println(sBuffer.length()); //5.反转: //StringBuffer reverse() System.out.println(sBuffer.reverse()); } }
网址
/*
* 1.学习网址: "https://www.baidu.com:80/ewf/sdf?name=bingbing&age=20"
* 网址的功能:实现客户端与服务器端的通信
协议:是制定一个统一的规范
http协议:超文本传输协议,实现的是网络间的通信的一个通信规则
https协议:安全的http协议---可以省略,默认是http协议
域名/IP:标记网络上的唯一一台主机 可以简化写:baidu
端口号:标记同一台主机上的某一个服务器 [0,65536]---可以省,默认80
资源路径: 可以省
查询条件: 可以省
* http://www.baidu.com/sdf/sfs?name=bingbing&age=33
* 例子:
* 1.判断是不是网址---http/https
* 2.取出端口
* 3.取出查询条件
*
* 2.验证qq号与密码是否正确?
* a:本地验证---验证的是qq与密码的格式
* --qq:1.首字母不能为0 2.全部是数字 3.[5,11]
* 要求:使用两种方式验证:1.普通的字符串验证 2.利用自定义的异常
* b:网络验证---验证的是qq与密码与服务器存储的是否相同.
* --写一个虚拟的qq,密码即可
*/
日期类:Date
-
Data:数据类,装的是二进制的数据
-
java.util 对应的是java的日期类型,包括年月日 时分秒
-
java.sql 对应的是数据库的日期类型 ,只包括 年月日
-
public class Demo5 { public static void main(String[] args) { //获取当前的时间 Date date = new Date(); System.out.println(date); //long型的时间,这个时间从1970年开始算 long time = date.getTime(); System.out.println(time); Date date2 = new Date(time); System.out.println(date2); } }
-
日期转换—日期格式转换器
Format:格式转换器
DateFormat:日期格式转换器
public class Demo6 { public static void main(String[] args) { //1.使用系统提供的默认的格式-DateFormat--提供了四种可选模式:short,long,full,default //第一个参数用于指定日期格式 第二个参数用于指定时间格式 DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT); String stringDate = dateFormat.format(new Date()); System.out.println(stringDate); //1993-02-03 23:23:12 1993/02/03 23:23:12 //使用自定义的日期格式转换器实现自由转换----SimpleDateFormat SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");//HH代表24小时制 String stringDate1 = simpleDateFormat.format(new Date()); System.out.println(stringDate1); } }
日历类(Calendar)
public class Demo8 {
public static void main(String[] args) {
//日历类
Calendar calendar = Calendar.getInstance();
System.out.println(calendar);
//获取当前的Date类型的时间
Date date = calendar.getTime();
System.out.println(date);
//获取指定的值
int value = calendar.get(Calendar.DATE);
System.out.println(value);
//获取属性的最大值,最小值
int value1 = calendar.getMaximum(Calendar.YEAR);
int value2 = calendar.getMinimum(Calendar.YEAR);
System.out.println(value1+" "+value2);
}
}
Arrays:数组工具类
内部封装了大量操作数组的方法–方法都是静态.
public class Demo9 {
public static void main(String[] args) {
//简单数据类型数组转字符串---方便我们对数组的内容进行查看
int[] arr1 = {3,4,6,8,9};
System.out.println(arr1);
System.out.println(Arrays.toString(arr1));
//数组转集合
//简单数据类型数组转集合
List list = Arrays.asList(arr1);
System.out.println(list.size());//1 将整个简单数据类型的数组作为了集合的一个元素
//引用数据类型数组转集合
String[] strings = {"haha","hehe","hello"};
List list2 = Arrays.asList(strings);
System.out.println(list2.size());//3 //引用类型数组中的一个元素对应集合中的一个元素
//注意点:
//转过来的集合长度是固定,所以不能执行增加,删除.但是可以执行修改,更改,遍历
//list2.add("java");
list2.set(0, "BigData");
System.out.println(list2);
//二分查找
int[] arr3 = {3,6,8,67,678};
System.out.println(Arrays.binarySearch(arr3, 67));
}
}