公司网站如何做的美丽长尾关键词查询工具
1、API
API(Application Programming Interface):应用程序编辑接口
简单理解:API就是别人已经写好的东西,我们不需要自己编写,直接使用即可。
Java API:指的就是JDK中提供的各种功能的Java类
这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可。
API帮助文档:帮助开发人员更好的使用API和查询API的一个工具
2、字符串
有字符串参与的“+”都是拼接操作,产生一个新的字符串
String概述
java.lang.String类代表字符串,Java程序中的所有字符串文字(例如'abc")都为此类的对象。
String的注意点
字符串的内容是不会发生改变的,它的对象在创建后不能被更改。
下面的这种情况并不是改变了原来字符串的内容,而是创建了一个新的字符串,把新的字符串再赋值给前面的变量name
总结
3.创建String对象的两种方式
- 直接赋值
- new 构造方法
例:
public class StringDemo1 {public static void main(String[] args) {//1.使用直接赋值的方式获取一个字符串对象String s1 ="abc";System.out.println(s1);//2.使用new的方式来获取一个字符串对象//空参构造:可以获取一个空白的字符串对象String s2 =new String();System.out.println("@"+s2+"!");//传递一个字符串,根据传递的字符串内容再创建一个新的字符串对象String s3 = new String("abc");System.out.println(s3);//传递一个字符数组,根据字符数组的内容再创建一个新的字符串对象//需求:我要修改字符串的内容:abc-->Qbc//abc --> {'a','b','c'} --> {'Q','b','c'} --> "Qbc"char[] chs ={'a','b','c','d'};String s4 = new String(chs);System.out.println(s4);//传递一个字节数组,根据字节数组的内容再创建一个新的字符串对象//应用场景:以后在网络当中传输的数据其实都是字节信息//我们一般要把字节信息进行转换,转成字符串,此时就要用到这个构造了byte[] bytes={97,98,99,100};String s5 = new String(bytes);System.out.println(s5);}
}
内存
StringTable(串池):字符串常量池,用于存储字符串,只有直接赋值的字符串才存储在串池中,new关键字的不在此处
每new一次,创建一个新的空间,相同的字符串较多时,会浪费内存空间
4.Java的常用方法(比较)
字符串比较
- boolean equals方法(要比较的字符串) 完全一样结果才是true,否则为false
- boolean equalslgnoreCase(要比较的字符串) 忽略大小写的比较
例1:
public class StringDemo2 {public static void main(String[] args) {//1.创建两个字符串对象String s1 = new String("abc");String s2 = "Abc";//2.==号比较//基本数据类型:比的是数据值//引用数据类型:比的是地址值System.out.println(s1 == s2);//3.比较字符串对象中的内容是否相等boolean result1 = s1.equals(s2);System.out.println(result1);//4.比较字符串对象的内容是否相等,忽略大小写//忽略大小写只能是英文状态下的boolean result2 = s1.equalsIgnoreCase(s2);System.out.println(result2);}
}
例2:
import java.util.Scanner;public class StringDemo3 {public static void main(String[] args) {//1.假设我现在键盘录入一个abcScanner sc = new Scanner(System.in);System.out.println("Enter a string: ");String str1 = sc.next();//abc 是new出来的//2.代码中再定义一个字符串abcString str2 ="abc";//3.用==比较,这两者能一样吗?System.out.println(str1==str2);//结论://以后只要想比较字符串的内容,就必须要用String里面的方法}
}
5.StringBuilder
StringBuilder概述
StringBuilder 可以看成是一个容器,创建之后里面的内容是可变的
- 作用:提高字符串的操作效率
StringBuilder构造方法
方法名 | 说明 |
---|---|
public StringBuilder() | 创建一个空白可变字符串对象,不含有任何内容 |
public StringBuilder(String str) | 根据字符串的内容,来创建可变字符串对象 |
StringBuilder常用方法
方法名 | 说明 |
---|---|
public StringBuilder append(任意类型) | 添加数据,并返回对象本身 |
public StringBuilder reverse() | 反转容器中的内容 |
public int length() | 返回长度(字符出现的个数) |
public String toString() | 通过toString()就可以实现把StringBuilder转换为String |
例1:
public class StringBuilderDemo3 {public static void main(String[] args) {//1.创建对象StringBuilder sb = new StringBuilder();//打印//普及://因为StringBuilder是Java已经写好的类//打印对象不是地址值而是属性值System.out.println(sb);//打印结果为空}
}
public class StringBuilderDemo3 {public static void main(String[] args) {//1.创建对象StringBuilder sb = new StringBuilder("abc");//打印//普及://因为StringBuilder是Java已经写好的类//打印对象不是地址值而是属性值System.out.println(sb);//abc}
}
public class StringBuilderDemo3 {public static void main(String[] args) {//1.创建对象StringBuilder sb = new StringBuilder("abc");//2.添加元素sb.append(1);sb.append(2.3);sb.append(true);//打印//普及://因为StringBuilder是Java已经写好的类//打印对象不是地址值而是属性值System.out.println(sb);//abc12.3true}
}
public class StringBuilderDemo3 {public static void main(String[] args) {//1.创建对象StringBuilder sb = new StringBuilder("abc");//反转sb.reverse();//打印//普及://因为StringBuilder是Java已经写好的类//打印对象不是地址值而是属性值System.out.println(sb);//cba}
}
public class StringBuilderDemo3 {public static void main(String[] args) {//1.创建对象StringBuilder sb = new StringBuilder("abc");//获取长度int len = sb.length();System.out.println(len);//3//打印//普及://因为StringBuilder是Java已经写好的类//打印对象不是地址值而是属性值System.out.println(sb);}
}
public class StringBuilderDemo3 {public static void main(String[] args) {//1.创建对象StringBuilder sb = new StringBuilder("abc");//2.添加字符串sb.append("aaa");sb.append("bbb");sb.append("ccc");sb.append("ddd");System.out.println(sb);//aaabbbcccddd//3.再把StringBuilder变回字符串String str = sb.toString();System.out.println(str);//aaabbbcccddd}
}
链式编程:当我们在调用一个方法的时候,不需要用变量接收他的结果,可以继续调用其他方法
例2:
import java.util.Scanner;public class StringBuilderDemo4 {public static void main(String[] args) {//链式编程://当我们在调用一个方法的时候,不需要用变量接收他的结果,可以继续调用其他方法int len =getString().substring(1).replace("A","Q").length();System.out.println(len);//2}public static String getString(){Scanner sc = new Scanner(System.in);System.out.println("Enter a string: ");String str = sc.nextLine();//abcreturn str;}
}
public class StringBuilderDemo3 {public static void main(String[] args) {//1.创建对象StringBuilder sb = new StringBuilder("abc");//2.添加字符串sb.append("aaa").append("bbb").append("ccc").append("ddd");System.out.println(sb);//aaabbbcccddd//3.再把StringBuilder变回字符串String str = sb.toString();System.out.println(str);//aaabbbcccddd}
}
练习(对称字符串)
import java.util.Scanner;public class StringBuilderDemo6 {//使用StringBuilder的场景://1.字符串的拼接//2.字符串的反转public static void main(String[] args) {//1.键盘录入一个字符串Scanner sc = new Scanner(System.in);System.out.println("请输入一个字符串");String str = sc.next();//2.反转键盘录入的字符串String result = new StringBuilder().append(str).reverse().toString();//3.比较if(str.equals(result)){System.out.println("当前字符串是对称字符串");}else{System.out.println("当前字符串不是对称字符串");}}
}
练习(拼接字符串)
public class StringBuilderDemo7 {public static void main(String[] args) {//1.定义数组int[] arr ={1,2,3};//2.调用方法把数组变成字符串String str = arrToString(arr);System.out.println(str);//[1,2,3]}public static String arrToString(int[] arr) {StringBuffer sb = new StringBuffer();sb.append("[");for (int i = 0; i < arr.length; i++) {if (i == arr.length - 1) {sb.append(arr[i]);}else{sb.append(arr[i]).append(",");}}sb.append("]");return sb.toString();}
}
6.StringJoiner
StringJoiner概述
- StringJoiner跟StingBuilder一样,也可以看成是一个容器,创建之后里面的内容是可变的。
- 作用:提高字符串的操作效率,而且代码编写特别简洁,但是目前市场上很少有人用
- JDK8出现的
StringJoiner的构造方法
方法名 | 说明 |
---|---|
public StringJoiner(间隔符号) | 创建一个StringJoiner对象,指定拼接时的间隔符号 |
public StringJoiner(间隔符号,开始符号,结束符号) | 创建一个StringJoiner对象,指定拼接时的间隔符号、开始符号、结束符号 |
StringJoiner的成员方法
方法名 | 说明 |
---|---|
public StringJoiner add(添加的内容) | 添加数据,并返回对象本身 |
public int length() | 返回长度(字符出现的个数) |
public String toString() | 返回一个字符串(该字符串就是拼接之后的结果) |
例:
import java.util.StringJoiner;public class StringJoinerDemo1 {public static void main(String[] args) {//1.创建一个对象,并指定中间的间隔符号StringJoiner sj = new StringJoiner("---");//2.添加元素sj.add("aaa").add("bbb").add("ccc");//3.打印结果System.out.println(sj);//aaa---bbb---ccc}
}
import java.util.StringJoiner;public class StringJoinerDemo2 {public static void main(String[] args) {//1.创建对象StringJoiner sj = new StringJoiner(", ","[","]");//2.添加元素sj.add("aaa").add("bbb").add("ccc");int len = sj.length();System.out.println(len);//15//3.打印结果System.out.println(sj);//[aaa, bbb, ccc]String str=sj.toString();System.out.println(str);//[aaa, bbb, ccc]}
}
总结
7.字符串原理
7.1 字符串存储的内存原理
- 直接赋值会复用字符串常量池中的
- new出来不会复用,而是开辟一个新的空间
7.2 ==号比较的到底时什么?
- 基本数据类型比较数据值
- 引用数据类型比较地址值