当前位置: 首页 > news >正文

网站轮播图的按钮怎么做的做外贸没网站可以吗

网站轮播图的按钮怎么做的,做外贸没网站可以吗,代运营电商平台公司,平面设计培训班课程目录 1. String类的重要性 2.常用方法 2.1字符串构造 2.2 String对象的比较 2.3字符串查找 2.4转化 2.5字符串替换 2.6字符串拆分 2.7字符串截取 2.8其他操作方法 2.9字符串的不可变性 2.10字符串修改 3. StringBuffer和StringBuilder 3.1StringBuilder的介绍 4.…

目录

1. String类的重要性

2.常用方法

2.1字符串构造

2.2 String对象的比较

2.3字符串查找

2.4转化

2.5字符串替换

2.6字符串拆分

2.7字符串截取

2.8其他操作方法

2.9字符串的不可变性

2.10字符串修改

3. StringBuffer和StringBuilder

3.1StringBuilder的介绍

4.String类oj


1. String类的重要性

在C语言中已经涉及到字符串了 ,但是在C语言中要表示只要使用字符数组或者字符指针,就可以使用标准库提供的字符串系列函数完成大部分的操作,但是这种将数组和操作方法分离开的方式不符合面向对象的思想,而字符串应用又非常广泛,因此Java语言专门提供了String类。

2.常用方法

2.1字符串构造

String类提供的构造方式非常多,常用的就以下三种:

public static void main(String[] args) {
// 使用常量串构造
String s1 = "hello bit";
System.out.println(s1);
// 直接newString对象
String s2 = new String("hello bit");
System.out.println(s1);
// 使用字符数组进行构造
char[] array = {'h','e','l','l','o','b','i','t'};
String s3 = new String(array);
System.out.println(s1);
}

【注意】

1.String是引用类型,内部并不存储字符串本身

public static void main(String[] args) {
// s1和s2引用的是不同对象 s1和s3引用的是同一对象
String s1 = new String("hello");
String s2 = new String("world");
String s3 = s1;
System.out.println(s1.length()); // 获取字符串长度---输出5
System.out.println(s1.isEmpty()); // 如果字符串长度为0,返回true,否则返回false
}

2.在Java中“”引起来的也是String类型对象

// 打印"hello"字符串(String对象)的长度
System.out.println("hello".length());
2.2 String对象的比较

字符串的比较是常见操作之一,比如:字符串排序。在Java中总共提供了四种方式。

1.==比较是否引用同一个对象

注意:对于内置类型,==比较的是变量中的值;对于引用类型==比较的是引用中的地址。

public static void main(String[] args) {
int a = 10;
int b = 20;
int c = 10;
// 对于基本类型变量,==比较两个变量中存储的值是否相同
System.out.println(a == b); // false
System.out.println(a == c); // true
// 对于引用类型变量,==比较两个引用变量引用的是否为同一个对象
String s1 = new String("hello");
String s2 = new String("hello");
String s3 = new String("world");
String s4 = s1;
System.out.println(s1 == s2); // false
System.out.println(s2 == s3); // false
System.out.println(s1 == s4); // true
}

2.Boolean equals(Object an Object)方法:按照字典序比较

字典序:字符大小的比较

String类重写了父类Object中的equals方法,Object中equals默认按照==比较,String重写equals方法后,按照如下规则进行比较,比如:s1.equals(s2)

public boolean equals(Object anObject) {
// 1. 先检测this 和 anObject 是否为同一个对象比较,如果是返回true
if (this == anObject) {
return true;
}
// 2. 检测anObject是否为String类型的对象,如果是继续比较,否则返回false
if (anObject instanceof String) {
// 将anObject向下转型为String类型对象
String anotherString = (String)anObject;
int n = value.length;
// 3. this和anObject两个字符串的长度是否相同,是继续比较,否则返回false
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
// 4. 按照字典序,从前往后逐个字符进行比较
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}
public static void main(String[] args) {
String s1 = new String("hello");
String s2 = new String("hello");
String s3 = new String("Hello");
// s1、s2、s3引用的是三个不同对象,因此==比较结果全部为false
System.out.println(s1 == s2); // false
System.out.println(s1 == s3); // false
// equals比较:String对象中的逐个字符
// 虽然s1与s2引用的不是同一个对象,但是两个对象中放置的内容相同,因此输出true
// s1与s3引用的不是同一个对象,而且两个对象中内容也不同,因此输出false
System.out.println(s1.equals(s2)); // true
System.out.println(s1.equals(s3)); // false
}

3.int compareTo(String s )方法:按照字典序进行比较

与equals不同的是,equals返回的是Boolean类型,而compareTo返回的是int类型。具体比较方式:

  1. 先按照字典次序比较大小,如果不出现不等的字符,直接返回这两个字符的大小差值。
  2. 如果前k个字符相等(k为两个字符长度最小值),返回值两个字符串长度差值。
public static void main(String[] args) {
String s1 = new String("abc");
String s2 = new String("ac");
String s3 = new String("abc");
String s4 = new String("abcdef");
System.out.println(s1.compareTo(s2)); // 不同输出字符差值-1
System.out.println(s1.compareTo(s3)); // 相同输出 0
System.out.println(s1.compareTo(s4)); // 前k个字符完全相同,输出长度差值 -3
}

4.int compareTolgnoreCase(String str)方法:与compare To 方式相同,但是忽略大小写比较。

public static void main(String[] args) {
String s1 = new String("abc");
String s2 = new String("ac");
String s3 = new String("abc");
String s4 = new String("abcdef");
System.out.println(s1.compareTo(s2)); // 不同输出字符差值-1
System.out.println(s1.compareTo(s3)); // 相同输出 0
System.out.println(s1.compareTo(s4)); // 前k个字符完全相同,输出长度差值 -3
2.3字符串查找

字符串查找也是字符串中非常常见的操作,String类提供的常用查找的方法:

方法功能
char charAt(int index)返回index位置上字符,如果index为负数或者越界,抛出indexOutOfBoundsException异常
int indexOf(int ch)返回ch第一次出现的位置,没有返回-1
int indexOf(int ch,int fromIndex)

从fromIndex位置开始找ch第一次出现的位置,没有返回-1

int indexOf(String str)返回str第一次出现的位置,没有返回-1
int indexOf(String str,int fromIndex)从fromIndex位置开始找str第一次出现的位置,没有返回-1
int lastIndexOf(int ch)从后往前找,返回ch第一次出现的位置,没有返回-1
int lastIndexOf(int ch,int fromIndex)从fromIndex位置开始找,从后往前找ch第一次出现的位置,没有返回-1
int lastIndexOf(String str)从后往前找,返回str第一次出现的位置,没有返回-1
int lastIndexOf(string str,int fromIndex)从fromIndex位置开始找,从后往前找dstr第一次出现的位置,没有返回-1
public static void main(String[] args) {
String s = "aaabbbcccaaabbbccc";
System.out.println(s.charAt(3)); // 'b'
System.out.println(s.indexOf('c')); // 6
System.out.println(s.indexOf('c', 10)); // 15
System.out.println(s.indexOf("bbb")); // 3
System.out.println(s.indexOf("bbb", 10)); // 12
System.out.println(s.lastIndexOf('c')); // 17
System.out.println(s.lastIndexOf('c', 10)); // 8
System.out.println(s.lastIndexOf("bbb")); // 12
System.out.println(s.lastIndexOf("bbb", 10)); // 3

注意:上述方法都是实例方法。

2.4转化

1.数字和字符串转化

public static void main(String[] args) {
// 数字转字符串
String s1 = String.valueOf(1234);
String s2 = String.valueOf(12.34);
String s3 = String.valueOf(true);
String s4 = String.valueOf(new Student("Hanmeimei", 18));
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
System.out.println(s4);
System.out.println("=================================");
// 字符串转数字
// 注意:Integer、Double等是Java中的包装类型
int data1 = Integer.parseInt("1234");
double data2 = Double.parseDouble("12.34");
System.out.println(data1);
System.out.println(data2);
}

2.大小写转换

public static void main(String[] args) {
String s1 = "hello";
String s2 = "HELLO";
// 小写转大写
System.out.println(s1.toUpperCase());
// 大写转小写
System.out.println(s2.toLowerCase());
}

3.字符串转数组

public static void main(String[] args) {
String s = "hello";
// 字符串转数组
char[] ch = s.toCharArray();
for (int i = 0; i < ch.length; i++) {
System.out.print(ch[i]);
}
System.out.println();
// 数组转字符串
String s2 = new String(ch);
System.out.println(s2);
}

4.格式化

public static void main(String[] args) {
String s = String.format("%d-%d-%d", 2019, 9,14);
System.out.println(s);
}
2.5字符串替换

使用一个指定的新的字符串替换掉已有的字符串数据,可用的方法如下:

方法功能
String replace All(String regex, String replacement)替换所有的指定内容
String replaceFirst(String regex,String replacement)替换几个内容

代码示例:字符串的替换处理

String str = "helloworld" ;
System.out.println(str.replaceAll("l", "_"));
System.out.println(str.replaceFirst("l", "_"));

【注意事项】:由于字符串时不可变对象,替换不修改当前字符串,而是产生一个新的字符串。

2.6字符串拆分

可以将一个完整的字符串按照指定的分隔符划分成若干个子字符串。

可用方法如下:

方法功能
String[] split(String regex)将字符串全部拆分
String[] split(String regex, int limit)将字符串以指定的格式,拆分成limit组

代码示例:实现字符串的拆分处理。

String str = "hello world hello bit" ;
String[] result = str.split(" ") ; // 按照空格拆分
for(String s: result) {
System.out.println(s);
}

代码示例:字符串的部分拆分

String str = "hello world hello bit" ;
String[] result = str.split(" ",2) ;
for(String s: result) {
System.out.println(s);
}

代码示例:拆分IP地址

String str = "192.168.1.1" ;
String[] result = str.split("\\.") ;
for(String s: result) {
System.out.println(s);
}

【注意事项】:

  1. 字符“|”,“*”,“+”都得加上转义字符,前面加上“\\”。
  2. 而如果是“\”,那么就得写成“\\\”。
  3. 如果一个字符串中有多个分隔符,可以用“|”作为连字符。

代码示例:多次拆分

String str = "name=zhangsan&age=18" ;
String[] result = str.split("&") ;
for (int i = 0; i < result.length; i++) {
String[] temp = result[i].split("=") ;
System.out.println(temp[0]+" = "+temp[1]);
}
2.7字符串截取

从一个完整的字符串中截取出部分内容。可用方法如下:

方法功能
String substring(int beginIndex)从指定索引截取到结尾
String substring(int beginIndex, int endIndex)截取部分内容

代码示例:观察字符串截取

String str = "helloworld" ;
System.out.println(str.substring(5));
System.out.println(str.substring(0, 5));

【注意事项】:

  1. 索引从0开始
  2. 注意前闭后开区间的写法,substring(0,5)表示包含0号下标的字符,不包含5号下标
2.8其他操作方法
方法功能
String trim()去掉字符串中的左右空格,保留中间空格
String toUppperCase()字符串转大写
String toLowerCase()字符串转小写

代码示例:观察trim()方法的使用

String str = " hello world " ;
System.out.println("["+str+"]");
System.out.println("["+str.trim()+"]");

trim会去掉字符串开头和结尾的空白字符(空格,换行,制表符等)。

代码示例:大小写转换

String str = " hello%$$%@#$%world 哈哈哈 " ;
System.out.println(str.toUpperCase());
System.out.println(str.toLowerCase());

这两个函数只转换字母。

2.9字符串的不可变性

String是一种不可变对象,字符串中的内容是不可改变。字符串不可呗修改,是因为:

1.String类在设计时就是不可改变的,String类实现描述中已经说明了

String类中的字符实际保存在内部维护的value字符数组中。

2.所有涉及到可能修改字符串内容的操作都是创建一个新的对象,改变的是新对象。

final修饰类表明该类不想被继承,final修饰引用类型表明该引用变量不能引用其他对象,但是其引用对象中的内容是可以修改的。

2.10字符串修改

注意:尽量避免直接对string类型对象进行修改,因为String类是不能被修改的,所有的修改都会创建新的对象,效率非常低下。

public static void main(String[] args) {
String s = "hello";
s += " world";
System.out.println(s); // 输出:hello world
}
public static void main(String[] args) {
long start = System.currentTimeMillis();
String s = "";
for(int i = 0; i < 10000; ++i){
s += i;
}
long end = System.currentTimeMillis();
System.out.println(end - start);
start = System.currentTimeMillis();
StringBuffer sbf = new StringBuffer("");
for(int i = 0; i < 10000; ++i){
sbf.append(i);
}
end = System.currentTimeMillis();
System.out.println(end - start);
start = System.currentTimeMillis();
StringBuilder sbd = new StringBuilder();
for(int i = 0; i < 10000; ++i){
sbd.append(i);
}
end = System.currentTimeMillis();
System.out.println(end - start);
}

可以看待在对String类进行修改的时候,效率是非常慢的,因此,尽量避免对String类的直接需要,如果要修改尽量使用StringBuffer或者StringBuilder。

3. StringBuffer和StringBuilder

3.1StringBuilder的介绍
方法功能
StringBuff append(String str)在尾部追加,相当于String的“+=”,可以追加:boolean,char,char[],double,float,int,Object,String,StringBuff的变量
char charAt(int index)获取index位置的字符
int length()获取字符串的长度
int  capacity()获取底层保护字符串空间总的大小
void ensureCapacity(int mininmumCapacitty) 扩容
void setCharAt(int index,chae ch)将index位置的字符设置为ch
int indexof(String str)返回str第一次出现的位置
int indexOf(String str, int fromIndex)从fromIndex位置开始查找str第一次出现的位置
int lastIndexOf(String str)返回最后一次出现的Str位置
int lastIndexOf(String str, int fromIndex)从fromIndex位置开始找Str最后一次出现的位置
StringBuff insert(int offset,String str)在Offset位置插入:八种基本类型&String类型&Object类型数据
StringBuffer deleteCharAt(int index)删除Index位置字符
StringBufffer delete(int start, int end)删除【start,end】区间的字符
String Buffer replace(int start,int end, String str)

将【start,end】位置的字符替换成str

String substring(int start)从start开始一直到末尾的字符以String的方式返回
String substring(int start,int end)将【start,end】范围内的字符以String的方式返回
StringBuffer reverse()反转字符串
String toSting()将所有字符按照String的方式返回
public static void main(String[] args) {
StringBuilder sb1 = new StringBuilder("hello");
StringBuilder sb2 = sb1;
// 追加:即尾插-->字符、字符串、整形数字
sb1.append(' '); // hello
sb1.append("world"); // hello world
sb1.append(123); // hello world123
System.out.println(sb1); // hello world123
System.out.println(sb1 == sb2); // true
System.out.println(sb1.charAt(0)); // 获取0号位上的字符 h
System.out.println(sb1.length()); // 获取字符串的有效长度14
System.out.println(sb1.capacity()); // 获取底层数组的总大小
sb1.setCharAt(0, 'H'); // 设置任意位置的字符 Hello world123
sb1.insert(0, "Hello world!!!"); // Hello world!!!Hello world123
System.out.println(sb1);
System.out.println(sb1.indexOf("Hello")); // 获取Hello第一次出现的位置
System.out.println(sb1.lastIndexOf("hello")); // 获取hello最后一次出现的位置
sb1.deleteCharAt(0); // 删除首字符
sb1.delete(0,5); // 删除[0, 5)范围内的字符
String str = sb1.substring(0, 5); // 截取[0, 5)区间中的字符以String的方式返回
System.out.println(str);
sb1.reverse(); // 字符串逆转
str = sb1.toString(); // 将StringBuffer以String的方式返回
System.out.println(str);
}

4.String类oj

1.第一次只出现一次的字符

class Solution {
public int firstUniqChar(String s) {
int[] count = new int[256];
// 统计每个字符出现的次数
for(int i = 0; i < s.length(); ++i){
count[s.charAt(i)]++;
}
// 找第一个只出现一次的字符
for(int i = 0; i < s.length(); ++i){
if(1 == count[s.charAt(i)]){
return i;
}
}
return -1;
}
}

2.最后一个单词的长度

import java.util.Scanner;
public class Main{
public static void main(String[] args){
// 循环输入
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
// 获取一行单词
String s = sc.nextLine();
// 1. 找到最后一个空格
// 2. 获取最后一个单词:从最后一个空格+1位置开始,一直截取到末尾
// 3. 打印最后一个单词长度
int len = s.substring(s.lastIndexOf(' ')+1, s.length()).length();
System.out.println(len);
}
sc.close();
}
}

3.检测字符串是否为回文

class Solution {
public static boolean isValidChar(char ch){
if((ch >= 'a' && ch <= 'z') ||
(ch >= '0' && ch <= '9')){
return true;
}
return false;
}
public boolean isPalindrome(String s) {
// 将大小写统一起来
s = s.toLowerCase();
int left = 0, right = s.length()-1;
while(left < right){
// 1. 从左侧找到一个有效的字符
while(left < right && !isValidChar(s.charAt(left))){
left++;
}
// 2. 从右侧找一个有效的字符
while(left < right && !isValidChar(s.charAt(right))){
right--;
}
if(s.charAt(left) != s.charAt(right)){
return false;
}else{
left++;
right--;
}
}
return true;
}
}

http://www.yayakq.cn/news/533764/

相关文章:

  • 硅胶鞋垫移动网站建设wordpress 404模板
  • 电子商务网站建站流程wordpress管理员表
  • 做网站开发怎么接单哪有培训网站开发
  • 有什么正网站做兼职的哪个网站买东西最便宜
  • 南宁网站建设教学怎么样把第一页PPT设为模板相关信息圆柱钢模板优势是什么?企业网站建设模板和定制化有什么区别呢?
  • 深圳住房和建设局网站wordpress中文读音
  • 网站被挂了黑链建设学校网站
  • 吉利汽车网站开发环境分析免费公司取名器
  • 企业网站推广的形式有哪些wordpress 熊掌号插件
  • 从化免费网站建设制作类似网站软件
  • 东莞企业网站多少钱网红营销分析
  • 宁波建网站价格达内学网站开发培训课程
  • 摄影网站建设的目的年会策划
  • 站长之家的seo综合查询工具重庆住建厅网站官网
  • 网站定制公司选哪家网站排名怎么优化
  • 逆袭做富豪官方网站工程建设项目管理办法实施细则
  • 贵州网站建设费用企业邮箱在哪里看
  • 一般的网站需要多大的空间网络规划与优化技术学什么
  • 织梦网站后台管理wordpress免费主题企业
  • 私人装修接单网站seo1搬到哪里去了
  • wordpress+本地编辑郑州厉害的seo优化顾问
  • 自己做的网站被黑了怎么办长沙购物网站建设
  • 北京 工业网站建设公司排名做公司网站注意什么
  • 自己做网站的网址网站需要服务器
  • 男女做羞羞的事视频网站wordpress主题检测
  • 摄影网站功能设计com域名和cn域名
  • 安徽专业网站建设创新网站编程员工资
  • 大连公司注册专业网站设计制作优化排名
  • 吕梁做网站的公司怎样建设网站公司
  • win7本地架设网站德阳市建设管理一体化平台网站