专业编程基础技术教程

网站首页 > 基础教程 正文

好程序员Java学习路线分享Java基础之string

ccvgpt 2024-07-26 00:15:32 基础教程 6 ℃

好程序员Java学习路线分享Java基础之string

先来讲一下字符串

好程序员Java学习路线分享Java基础之string

字串符分类:

不可变字符串:----String.字符串本身不能发生改变,与指向字符串的引用无关.

String s1 = "1000phone";

可变字符串:----StringBuilder/StringBuffer.字符串本身可以发生变化,与指向可变字符串的引用无关

StringBuffer sBuffer = new StringBuffer("1000phone");

不可变字符串本身是一个常量,保存在常量区,是存储在了堆区中一块儿特殊的区域里。

**字符串常量的特点:**同一个字符串常量在常量区只允许存储一个。

String s = "1000phone";//不可变字符串

* 当执行s的时候,会到常量区找叫1000phone的字符串,如果有直接让s保存他的地址,如果没有,会在常量区开辟一块儿空间存1000phone.

String s3 = new String("1000phone");

* 执行s3时,由于进行了new,一定会现在堆中开辟一块儿空间,而1000phone是作为参数传给了对象.保存在了对象的一个String

**使用equals进行String的比较**

**2.转换:**

将字符数组转换成字符串

char[] arr = {'p','h','o','n','e'};

String string1 = new String(arr); //string1 = phone

将字符串转换成字符数组

char[] arr1 = string.toCharArray();

System.out.println(arr1);

将字节数组转成字符串

//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); //abcd

将字符串转成字节数组

//byte[] getBytes()

byte[] bytes1 = string3.getBytes();

将基本数据类型转换成字符串

//String.valueOf()

String string4 = String.valueOf(true);

System.out.println(string4);//true

子串:

//包含起始位置,不包含结束位置,到结束位置的前一位

String substring(int beginIndex, int endIndex);

大小写转换

String toLowerCase(); // 转成小写

String toUpperCase(); // 转成大写

按字典顺序比较两个字符串

* 字典顺序:按照ASCII表比较当前的两个字符,ASCII码大的认为是大的字符

* 规则:从左边第一个字符开始比较

* 如果当前的字符不相同,直接认为ASCII大的字符串是大字符串,后面的字符停止比较

* 当前字符比较的具体规则:使用前面的字符-后面的字符,返回差值.如果是负数,说明前面的字符串小于后面的.反之前面的大.

* 如果当前的字符相同,再去比较第二个字符,依次往后推,如果比到最后都相同,则认为两个字符串相等,差值返回0.

"1000PHone".compareTo("1000PHone");//0

"1000AHone".compareTo("1000BHone");//-1

"100000".compareTo("100");//-3

**可变字符串:**

* 字符串缓冲区.StringBuffer/StringBuilder

* 区别:

* StringBuffer:出现在jdk1.0,是线程安全的,考虑了线程安全问题

* StringBuilder:出现在jdk1.5,是线程不安全的,没有考虑线程安全问题

*

* 注意:在不考虑线程安全问题时,尽量使用StringBuilder,因为速度快,效率高

使用:

StringBuffer sBuffer = new StringBuffer();

//1.存储:

//StringBuffer append(boolean b) 从最后插入

sBuffer.append("abcd"); //abcd

//StringBuffer insert(int offset, boolean b) 从指定位置插入

sBuffer.insert(4, 123);

System.out.println(sBuffer);//abcd123

//2.删除:

//StringBuffer delete(int start, int end) 删除一部分字符串

//StringBuffer deleteCharAt(int index) 删除一个字符

System.out.println(sBuffer.deleteCharAt(4));//abcd23

System.out.println(sBuffer.delete(2,4)); //ab23

//3.修改:

//StringBuffer replace(int start, int end, String str) 替换指定的子字符串

//void setCharAt(int index, char ch) 修改一个字符

sBuffer.replace(1, 3, "ab") ; //aab3

//4.获取:

//char charAt(int index)

System.out.println(sBuffer.charAt(0)); //a

//返回指定子字符串的下标 从左到右

//int indexOf(String str)

System.out.println(sBuffer.indexOf("ab"));//1

//返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。

System.out.println(sBuffer.indexOf("ab",0)); //1

System.out.println(sBuffer.indexOf("ab",2)); //-1

//int lastIndexOf(String str)

//返回指定子字符串(从右边开始计数)在此字符串第一次出现时的索引

System.out.println(sBuffer.indexOf("ba")); //-1

System.out.println(sBuffer.indexOf("ab")); //1

//int lastIndexOf(String str, int fromIndex)

/返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索。

System.out.println(sBuffer.indexOf("ab",1)); //1

//5.反转:

//StringBuffer reverse()

System.out.println(sBuffer.reverse()); //3baa

## 2.网址: ##

* 网址的功能:实现客户端与服务器端的通信

* 协议:是制定一个统一的规范

* http协议:超文本传输协议,实现的是网络间的通信的一个通信规则

* https协议:安全的http协议---可以省略,默认是http协议

* 域名/IP:标记网络上的唯一一台主机 可以简化写:baidu

* 端口号:标记同一台主机上的某一个服务器 [0,65536]---可以省,默认80

* 资源路径: 可以省

* 查询条件: 可以省

* 例子:

* 1.判断是不是网址---http/https

* 2.取出端口

* 3.取出查询条件

*

* 验证qq号与密码是否正确?

* a:本地验证---验证的是qq与密码的格式

* --qq:

* 1.首字母不能为0

* 2.全部是数字

* 3.[5,11]

* 要求:使用两种方式验证:

* 1.普通的字符串验证

* 2.利用自定义的异常

* b:网络验证---验证的是qq与密码与服务器存储的是否相同.

* --写一个虚拟的qq,密码即可

## 3.Date:日期类 ##

* Data:数据类,装的是二进制的数据

*

* java.util 对应的是java的日期类型,包括年月日 时分秒

* java.sql 对应的是数据库的日期类型 ,只包括 年月日

*

* long型的时间,这个时间从1970年开始算

* long time = date.getTime();

**日期转换**

* Format:格式转换器

* DateFormat:日期格式转换器

* //使用自定义的日期格式转换器实现自由转换----SimpleDateFormat

* SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");//HH代表24小时制

Tags:

最近发表
标签列表