内部复习资料
《使用Java语言编写程序案例》
第一章:初识Java
一、Java语言的起源:
1.Java语言是由Sun Microsystems公司(简称Sun)公司于1995年5月推出的程序设计语言。
2.Java是印度尼西亚,爪哇岛的英文名,因盛产咖啡而闻名,Java的logo正是一杯冒着热气的咖啡。
二、Java语言版本
1.JavaSE-Java Standard Edition(Java标准版)
2.JavaEE-Java Enterprise Edition(Java企业版)
3.JavaME-Java Mobile Edition(Java移动版)
三、Java语言之父
James Gosling(詹姆斯•高斯林),博士学位,Sun公司副总裁,IBM第一代工作站的缔造者,亲手设计了Java语言,被誉为Java语言之父。
四、Java语言特点
1.开源:Java程序源代码是公开的
2.跨平台:Java程序是运行在JVM(Java虚拟机)中的,并不是运行在操作系统中的
3.面向对象:Java语言是完全面向对象的编程语言,其特点是封装、继承和多态
五、JDK/JRE/JVM
1.JDK-Java Developer Kit(Java开发工具集)
2.JRE-Java Runtime Environment(Java运行时环境)
3.JVM-Java Virtual Machine(Java虚拟机)
特别注意:安装JDK需要根据不同的操作系统选择相应的JDK
六、配置Java开发环境
1.查看计算机属性,确定计算机操作系统类型及版本
2.下载和计算机对应版本的JDK文件
3.安装JDK,默认下一步直到安装完成
4.打开”C:\Program Files\Java\jdk\bin”文件夹并复制地址栏中的地址
5.单击右键”我的电脑”,选择”属性”,然后选择”高级系统设置”
6.单击”环境变量”,在下方”系统变量”中双击”path”
7.将复制的地址粘贴到变量值的最前面,并且在后面加一个分号
七、Java语言的编译和执行
1.Java语言是编译执行的高级编程语言
2.Java源文件(.java)文件通过编译,生成字节码(.class)文件
3.JVM(Java虚拟机)将负责运行编译后的字节码文件
具体步骤:
编写源程序编译源程序运行
用记事本编写Java程序步骤:
编写Java程序并以.java为后缀名保存使用javac命令编译源程序并生成.class文件使用java命令运行.class文件
八、特别注意
公有类名需要和源程序文件名相同,类名首字母需要大写,每条语句结束要使用分号
第二章:数据类型和运算符
一、变量概述
变量是用于容纳一个值的存储位置
Java语言是一种强类型编程语言,每个变量都必须有一个声明好的类型
Java的数据类型包括:
1.基本数据类型
2.引用数据类型
二、变量
变量是在程序运行过程中,可以改变值的一块内存空间,我们可以将这块内存空间理解为装数据用的盒子,这个盒子存放数据的类型就是数据类型,盒子的名称就是变量名,盒子里面装的内容就是存放的数据
三、基本数据类型
Java语言提供了四类八种基本数据类型
4种整数类型
byte、short、int、long
2种浮点类型
float、double
字符类型
char
布尔类型
boolean
四、整数类型
byte
1个字节,表示-27到27-1 (表示-128到127)
short
2个字节,表示-215到215-2 (表示-32768到32767)
int
4个字节,表示-231到231-1 (表示大约-21亿到21亿)
注意:int是整型数据的默认类型,默认值为0
long
8个字节,表示-263到263-1
注意:long类型数据需要在末尾加L
五、浮点类型
float
4个字节,单精度浮点数
注意:float类型数据需要在末尾加F
double
8个字节,双精度浮点数
注意:double是浮点型数据的默认类型
六、字符类型
char
2个字节,用单引号引起来,仅能包含一个字符
由于Java语言采用了Unicode编码方案,一个字符占2个字节长度,所以一个char类型的变量可以容纳一个中文字符
七、布尔类型
boolean
表示正确或错误,只有true和false两个可选值
八、使用变量
变量包括变量名和变量值两部分,变量名用于标记一段特定的存储空间,而变量值则以二进制的形式保存在该空间中,且可以被访问和修改
使用变量的步骤:
方法一:
1.声明变量,根据数据类型在内存中申请空间
数据类型变量名;
例:int myAge;
2.赋值,将数据存储在对应的内存空间中
变量名=数值;
例:myAge=18;
方法二:
1.将方法一的两个步骤合并,在声明变量的同时直接进行赋值
数据类型变量名=数值;
例:int myAge=18;
方法三:
1.同时声明多个相同数据类型的变量,并可以赋值
数据类型变量名1=值1,变量名2=值2,……,变量名N=值N;
例:int a=1,b=2,c=3;
特别注意:
1.等号表示赋值符号,方向从右向左
2.所有变量必须先声明后使用,在使用时,必须赋有初始值
3.在给变量赋值时要注意数据类型的取值范围
4.方法三在使用时必须用逗号分隔,方法三在一般情况下不推荐使用
5.成员变量在其所属对象创建时就被系统默认初始化过,一定是赋过值的
九、变量的分类
按照其所属的数据类型,可以分为基本数据类型变量和引用数据类型变量
按照其声明的位置可分为成员变量和局部变量
成员变量:在Java中声明的属性就是成员变量
局部变量:在方法中或语句块中声明的变量被称为局部变量,
局部变量只能在其所在的方法或语句块中起作用
十、变量命名规则
1.变量名可以由字母、数字、下划线和$组成,但不能以数字开头
2.不能使用系统关键字作为变量名
3.变量名严格区分大小写,长度没有限制
4.在同一范围内的变量名不允许重复
注意:Java语言采用的是Camel命名法
1.遵循Camel命名法则,即首字母以小写开始,后面的每个单词的首字母大写
例:myScore,myName
2.要尽量做到“见名知意”
了解:Pascal命名法则,即首字母大写,后面的每个单词的首字母也大写
十一、数据类型转换
在Java语言中,不同的数据类型之间可以相互转换,可分为两类:
1.自动类型转换(隐式转换)
取值范围小的数据类型到取值范围大的数据类型可以自动转换
byte a=10; //声明byte类型变量a
int b=a; //将byte类型变量a转换成int类型变量b
2.强制类型转换(显示转换)
取值范围大的数据类型到取值范围小的数据类型必须强制转换
int a=10; //声明int类型变量a
byte b=(byte)a; //将int类型变量a转换成byte类型变量b
注意:char类型和int类型可以相互转换,char类型占2个字节,int类型占4个字节
因此: 自动转换
char a=’好’; //声明char类型变量a
int b=a; //将char类型变量a转换成int类型变量b
强制转换
int a=23579; //声明int类型变量a
char b=(char)a; //将int类型变量a转换成char类型变量b
十二、控制台输入输出
控制台输出:
System.out.println(输出的内容); //输出后换行
System.out.print(输出的内容); //输出后不换行
控制台输入:
操作步骤:
1.import java.util.Scanner; //导入Scanner类
2.Scanner sc=new Scanner(System.in); //创建Scanner输入对象
3.sc.nextInt(); //输入一个int类型数据
4.sc.next(); //输入一个String类型数据
十三、字符串
String
表示一串字符,需用双引号引起来
特别注意:String类型不是基本数据类型
十四、扩展了解栈内存和堆内存
栈内存(Stack Memory)由特定应用程序专用,存储空间是连续的,以栈的方式(后进先出)进行管理,存储容量小,但访问速度快
堆内存(Heap Memory)由所有的应用程序公用,存储空间分配不连续,存储容量大,在堆内存中分配的存储空间和进行存取的操作速度较慢
十五、运算符概述
运算符是表示实现某种运算的符号
运算符特点:
1.每个运算符都有运算数目,即参加运算的操作数的个数
2.优先级,即当多个运算符同时出现时,所有单目运算符都高于多目运算符
十六、算术运算符
主要用于执行加、减、乘、除等算术运算。
假设:int n=9;
运算符 含义 目数 实例 结果
++ 自增1 1 n++/++n n的值为10
-- 自减1 1 n--/--n n的值为8
+ 加法 2 n+2 11
- 减法 2 n-2 7
* 乘法 2 n*2 14
/ 除法 2 n/2 4
% 求余数 2 n%2 1
特别注意:
1.后加加/后减减,先运算,后自增/自减(先人后己)
2.前加加/前减减,先自增/自减,后运算(先己后人)
3.如果是两个整数相除,结果只取整数部分
十七、赋值运算符
一般表现形式:变量名=表达式 方向从右向左
运算符 示例表达式 结果
= a=b 把b的值赋给a
+= a+=b 把a和b的和赋给a
-= a-=b 把a和b的差赋给a
*= a*=b 把a和b的乘积赋给a
/= a/=b 把a和b的商赋给a
%= a%=b 把a和b相除所得的余数赋给a
十八、关系运算符
用于比较两个量的运算符称为关系运算符,其运算结果是boolean类型的true或false
关系 含义
< 小于
<= 小于等于
> 大于
>= 大于等于
== 等于
!= 不等于
十九、表达式
表达式是由变量、常量、运算符、小括号等按照一定规则组成的式子
表达式经过运算后都能取得一个确定的值,而且具有类型
表达式的求值要根据运算符的意义以及类型转换约定共同决定
表达式的书写原则:
1.乘号的使用有别于在数学领域的用法,绝对不可以省略
2.括号必须成对出现,为了与索引区别,表达式中仅能使用小括号,
并且可以同时使用多个小括号
3.表达式从左到右,要在同一基准上书写,无高低之分
二十、关系表达式
一般表现形式:表达式1 关系运算符表达式2
若关系成立,则关系表达式的运算结果为真(true),否则为假(false)
二十一、逻辑运算符
Java语言中提供了三种逻辑运算符
! 逻辑非
&& 逻辑与
|| 逻辑或
逻辑非为单目运算符,从右向左运算
逻辑与和逻辑或为双目运算符,从左向右运算
逻辑运算真值表
x y !x x&&y x||y
true true false true true
true false false false true
false true true false true
false false true false false
特别注意:
1.当多个&&连续出现时,从左向右只要有一个操作数为false,表达式的结果为
false,并停止后续运算,被称为短路与
2.当多个||连续出现时,从左向右只要有一个操作数为true,表达式的结果为true,
并停止后续运算,被称为短路或
二十二、条件运算符
条件运算符是Java中唯一一个三目运算符,即运算涉及到三个操作数,通常也被称为三目运算符或三元运算符。
一般表现形式:表达式1?表达式2:表达式3
其中表达式1必须是boolean类型的,系统将首先计算表达式1的值,当其值为true时,则将表达式2的值作为整个表达式的最终结果,否则将表达式3的值作为整个表达式的最终结果。
二十三、字符串连接运算符
在Java语言中,“+”除了用于算术运算之外,还可以用于字符串连接操作
当“+”左右两侧均为数值类型数据时,将进行算术加法操作
当“+”左右两侧的操作数中有一个是String类型,将进行字符串的连接操作
(系统会自动将另一个操作数的值转换为String类型,然后进行字符串的连接操作)
第三章:流程控制
一、程序流程概述
按照程序运行流程,程序可分为三种基本结构
1.顺序结构:程序按照语句出现的先后顺序依次执行
2.分支结构:有条件的执行或跳过特定的语句
3.循环结构:在给定的条件成立时,反复执行某个代码段,直到条件不成立时终止
二、分支结构分类
按照形式分支结构可以分为:
1.单分支
2.双分支
3.多分枝
4.分支嵌套
三、单分支
基本语法
if(表达式){
//要执行的代码
}
表达式的结果一定是一个boolean类型值
大括号表示一个语句块,语句块内可以是一条或多条语句
如果表达式的结果为true,则执行if语句块内的语句;
如果表达式的结果为false,则跳过if语句块内的语句
四、双分支结构
语法结构
if(表达式){
//当表达式为true时要执行的代码
}else{
//当表达式为false时要执行的代码
}
如果表达式结果为true,则执行if语句块内的语句,
如果表达式结果为false,则跳过if语句块的语句而执行else语句块内的语句
因为表达式结果只有true、false,所以双分支结构的本质是两个语句块中二选一来执行
五、多分支结构
语法结构
if(表达式){
//要执行的代码
}else if(表达式){
//要执行的代码
}
……
}else{
//要执行的代码
}
多分支结构的本质是多个语句块中多选一来执行
六、分支嵌套
语法结构
if(表达式){
//要执行的代码
if(表达式){
//要执行的代码
}
}else{
//要执行的代码
}
分支嵌套是一个分支结构中包含了另一个完整的分支结构,其本质可以理解为多个条件并存的情况下,分别判断多个条件可以提高程序的可读性
七、多路分支
虽然用多分支结构可以解决多选一的问题,但当分支较多时,程序的结构依然十分复杂,降低了程序的可读性
在Java语言中提供个了另外一种多分支语句来描述多选一的情况,那就是switch语句
switch-case语句是多路判断语句,switch语句计算条件表达式并对照常量值进行检查
基本语法结构
swtich(表达式){
case 常量1:
//要执行的代码
break;
case 常量2:
//要执行的代码
break;
……
case 常量N:
//要执行的代码
break;
default:
//要执行的代码
break;
}
如果表达式的值和常量值对照检查相等,程序将会进入到相应的case中执行代码,break关键字表示一个case的结束,当不写break时,程序将会继续向下执行,直到break为止;当表达式的值和常量值对照检查都不相等时,程序将会执行default中的代码
八、分支结构特别注意
使用分支结构的时候,要注意条件是否能被所有的分支语句所覆盖
在Java语言中,switch在实际应用中使用频率不高,应视具体情况选择性的使用
九、循环结构
在给定的条件成立时,反复执行某个代码段,直到条件不成立时终止
给定的条件称为循环条件
反复执行的代码段称为循环体
十、循环分类
1.while循环
2.for循环
3.do-while循环
4.超级for循环
十一、while循环
基本结构:
○1初始条件
while(○2循环条件){
○3循环体
○4增量表达式
}
执行顺序:○1○2○3○4○2○3○4○2○3○4……
特别注意:增量表达式很重要,它是使循环趋于结束的语句,如果没有增量表达式,循环很有可能成为死循环
十二、for循环
基本结构:
for(○1初始条件;○2循环条件;○4增量表达式){
○3循环体
}
执行顺序:○1○2○3○4○2○3○4○2○3○4……
特别注意:for循环中的两个分号不能省略
十三、do-while循环
基本结构:
○1初始条件
do{
○3循环体
○4增量表达式
}while(○2循环条件);
执行顺序:○1○3○4○2○3○4○2○3○4……
特别注意:最后面的分号不能省略
十四、超级for循环
也称为增强for循环,通常只用在遍历容器时使用
基本结构:
for(数据类型变量名:容器名){
//要执行的代码
}
特别注意:使用超级for循环代码简单,适用于没有索引的容器遍历
十五、循环比较
一般情况下,三种循环都可以用来处理同一问题,可以相互代替
while循环和for循环是同一类型循环,都是先判断循环条件再执行循环体
do-while循环是先执行循环体,再判断循环条件,因此,循环体至少要被执行一次
由于每个循环的结构不同,解决不同的问题需要选择合适的循环结构,while循环适合解决重复的问题,而for循环适合解决有规律的问题,do-while循环在实际应用中使用频率不高。
十六、break和continue关键字
break
1.终止switch语句中的case语句,保证多路分支的正确执行
2.使程序退出一个循环,结束当前循环的执行(跳出当前循环)
特别注意:
1.break语句通常在循环中与条件语句一起使用,若条件成立,将跳出循环
2.在多层循环中,一个break语句只能向外跳出一层循环
continue
跳过循环体中剩余的语句而执行下一次循环(跳出当次循环)
特别注意:
由于使用分支结构可以达到和使用continue一样的效果并且可读性高、逻辑性强,因此continue关键字在实际应用中基本上不使用
十七、循环嵌套
类似于分支嵌套,在一个循环的循环体内又包含了一个完整的循环结构时,称为循环语句的嵌套,只有在内循环完全结束后,外循环才会进行下一次循环
第四章:方法和数组
一、数组概述
数组(Array)即是数据的组合,适用于集中管理类型相同的多个数据
数组是可以在内存中连续存储多个元素的结构
数组中的所有元素必须属于相同的数据类型(在不考虑多态的情况下)
二、数组的使用
声明数组语法:
数据类型[] 数组名;
例如:int[] score;
创建数组语法:
数据类型[] 数组名=new 数据类型[数组长度];
例如:int[] score=new int[5];
创建数组并初始化:
数据类型[] 数组名={元素1,元素2,……,元素n};
例如:int[] arr={1,2,3,4,5,6,7};
数组的使用:
索引:是指将数组中的每一个位置都设置一个具体的编号,第一个位置从0开始,依次递增
操作数组时主要是通过数组的名称和索引来完成的,用方括号括起来
例如:表示数组中的第1个元素,即arr[0],表示数组中的第三个元素,即arr[2]
数组的长度:
数组的长度即数组中可容纳元素的位置数,数组长度用数组的length属性表示
三、遍历数组
遍历:是指沿着某条搜索线路,依次访问每个元素
遍历数组就是依次访问数组中的每一个元素
通过循环,根据连续的索引进行遍历
四、二分查找(Binary Search)
将有序数列的中点设置为比较对象,如果要找的元素值小于该中点元素,则将待查序列缩小为左半部分,否则为右半部分,即通过一次比较,将查找区间缩小一半,就是二分查找
步骤:
1.首先确定整个查找区间的中点位置,即mid=(left+right)/2;
2.用待查对象与中点位置的值进行比较,若相等,则查找成功,若大于,则在后半区继续进行二分查找,若小于,则在前半区继续进行二分查找
3.若始终没有找到并且出现了left>right的情况,则查找失败
五、冒泡排序
将一组无序数列进行排序,采用两两比较,交换位置的原则,使数列最终达到有序
核心代码:
for(int i=0;i<arr.length-1;i++){
for(int j=i+1;j<arr.length;j++){
if(arr[i]>arr[j]){
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
六、插入与删除元素
插入元素:
1.首先要保证数组中现有的元素个数小于数组的长度,即还有空位置可以插入
2.考虑插入元素的位置,即所插入的位置后面的所有元素要依次向后移动
3.将元素插入到该位置
删除元素:
1.首先要得到要删除的元素位置
2.然后将该位置后面的元素依次向前移动
3.将原来最后一个元素所在的位置置空
七、数组总结
理解数组的概念
掌握数组的用法
数组的插入和删除操作比较复杂,需要执行多次数据移动操作,效率很低,在实际应用中不推荐使用
第六章:类和对象
面向对象编程的三大基本特点是:封装、继承、多态
面向对象编程的优点:可维护、可重用、可扩展、灵活性强
一、类的定义
类(class)是对具有相同属性和行为的对象的抽象。可以理解为类是对对象的抽象
世界万物,皆是对象(对象需要具备两个特性1.客观存在的2.可以描述的)
对象是归属于某个类的具体实例,对象可以是现实的物,也可以是抽象的事
二、属性
属性(attribute)体现了对象的某种特征,是Java类中描述事物状态参数的部分,用单个数据就能描述清楚
例如:人类的姓名、年龄。由于每个人的姓名、年龄都可能不同且会出现变化,只好每个人都保存一份专属于自己的属性信息,因此,Java的属性也被称为“成员变量”
声明属性语法:
访问权限修饰符数据类型属性名;
例如:private String name;
private int age;
三、方法
方法(method)相当于其他编程语言中的函数,是对象能够进行的操作,是Java类中描述事物行为(功能)的部分,属于动态特性。
可以将方法理解为具有一定功能的代码块
声明方法语法:
访问权限修饰符返回值类型方法名(参数列表){
方法体(要执行的代码)
}
特别注意:
1.方法名首字母应小写
2.如果一个方法运行时不返回任何结果(即没有返回值),则它的返回值类型应为void,不能够省略
四、构造方法
构造方法(constructor)也称为构造函数或构造器,实际上也是方法的一种
构造方法的功能是创建一个其所属类的对象和对对象的属性进行初始化
在Java中要求每个类至少要有一个构造方法,当类中没有构造方法时,系统将提供一个默认的无参数的构造方法,当在类中已经声明了构造方法,系统将不再提供默认的构造方法
构造方法语法:
访问权限修饰符类名(参数列表){
方法体(要执行的代码)
}
特别注意:
1.构造方法必须和所在类的类名相同,类名首字母大写,所以构造方法名也大写
2.构造方法声明时不允许指定返回值类型
五、属性封装
封装是对象最重要的特性,对于属性的封装,采用公有方法操作私有属性来完成
即在声明属性时,访问权限为私有,但可以根据公有的方法来操作这些私有的属性
六、类的声明
Java语言定义类的语法:
访问权限修饰符class 类名{
//属性声明
//构造方法
//方法声明
}
七、API文档
Sun公司为Java语言提供了Java API(Application Programming Interface),为其JDK系统类库中的类提供了使用说明
八、使用注释
1.单行注释:以//开头,注释内容从//开始到本行行尾结束
2.多行注释:以/*开头,直到遇到*/结束,注释内容可以跨行,适用于内容较长的注释
3.文档注释:以/**开头,直到遇到*/结束,注释内容可以跨行,使用JDK中提供的文档化工具javadoc可以将这种注释的内容提取出来自动生成软件说明文档
九、创建一个类的对象
基本语法结构:
数据类型引用名(变量名)=new 数据类型();
例如:Cat cat=new Cat();
数据类型引用名(变量名)=new 数据类型(参数列表);
例如:Student stu=new Student(“tom”,18);
十、static关键字
static可以用来修饰变量、方法和代码块
被static所修饰的变量和方法表明该成员归某个类所有,它将不再依赖任何一个对象,而是被所有对象所共享
访问静态成员均不需要创建类的对象,可以直接通过类名来调用
十一、this关键字
为了解决可能出现的命名冲突,Java语言引入了this关键字
在普通方法中,this代表方法的调用者,即本次调用了该方法的对象
在构造方法中,this代表该方法本次运行所要创建的那个新对象
特别注意:static和this不能同时使用
十二、方法调用
在静态方法中调用静态方法,类名调用
在静态方法中调用非静态方法,对象调用
在非静态方法中调用静态方法,类名调用
在非静态方法中调用非静态方法,对象调用
十三、引用数据类型
在Java语言中,除8种基本数据类型外,其他的数据类型统称为引用数据类型
一个基本数据类型只占有一处定长的存储空间,保存单一的值(保存在栈内存中)
一个引用数据类型在栈内存中保存一个引用,而真正的对象保存在堆内存中
特别注意:一个对象可以被多个引用变量所引用
十四、值传递
基本数据类型值传递:复制数据本身的值
引用数据类型值传递:复制的是引用,而不是对象本身的全部信息
十五、方法重载
重载(overload):类的同一种功能可能有多重实现方式,到底采用哪种实现方式,取决于调用者给定的参数
对于类的方法,如果有两个方法的方法名相同,但参数不同,那么可以说一个方法是另一个方法的重载方法
规则:
1.方法名相同
2.参数不同(类型不同、个数不同和顺序不同)
特别注意:
1.一般来说不采用顺序不同构成方法重载,没有实际意义
2.重载跟方法的访问权限修饰符和返回值类型没有关系
原则:只有对不同的数据完成基本相同的任务的方法才应该重载
优点:
1.不必对相同的操作使用不同的方法名
2.有利于理解和调试代码
3.更容易维护代码
十六、构造方法重载
当通过构造方法创建对象时,不同的对象可能有不同的初始化行为,这时我们需要对构造方法进行重载,这样我们可以通过构造方法的重载来表达对象的多重初始化行为,也就是说一个类可以有多个构造方法,它们之间的关系是重载,需要符合方法重载的定义
第七章:包和访问控制
一、包概述
在应用程序开发中常常会涉及到数目众多的类,为了便于查找和使用这些类,避免命名冲突以及访问控制,Java语言允许开发者将定义的类进行分组(封装),即将若干个功能相关的类逻辑上打包到一起,形成一个软件包并命名进行标记
Java平台的JDK中提供了大量定义好的类型,它们就是按照功能进行打包的
包相当于容器,是对Java类的封装
二、包的使用
包的声明:
package 包名称
导入包:
import 包名称
三、java.lang包
java.lang包是Java类库中最基本的包,包中提供了一些Java编程的一些基础类
java.lang包中的类不需要导入就可以在任何一个Java程序中使用
第五章:String字符串
字符串:可以理解为“一串字符”,底层由字符数组实现
特别注意:String不是基本数据类型
一、字符串的声明:
String city1=”巩义”;
String city2=new String(“巩义”);
二、字符串常量池
在内存中的特定区域已经定义好了所有的字符串
三、构造方法
String()
String str=new String();
String(String str)
String str=new String(“Hello”);
String(char[] ch)
char[] ch={‘H’,’e’,’l’,’l’,’o’};
String str=new String(ch);
四、String类的方法
1.获取字符串长度:int length()
2.获取指定索引位置的字符:char charAt(int index)
3.返回指定字符在此字符串中首次出现的索引,不存在返回-1:int indexOf(String str)
4.返回指定字符在此字符串中最后一次出现的索引,不存在返回-1:
int lastIndexOf(String str)
5.替换字符串,返回替换后的新字符串:String replace(String old,String new)
6.判断字符串是否以指定的前缀开始:boolean startsWith(String s)
7.判断字符串是否以指定的后缀结尾:boolean endsWith(String s)
8.将字符串中所有的字母转成大写:String toUpperCase()
9.将字符串中所有的字母转成小写:String toLowerCase()
10.截取字符串,从指定索引截到最后:String substring(int beginIndex)
11.截取字符串,从指定索引开始截到指定索引结束(包括头,不包括尾):
String substring(int beginIndex,int endIndex)
12.去掉字符串前后所有的空格:String trim()
13.返回基本数据类型的字符串表现形式:valueOf()
14.用指定字符分隔字符串:String[] split(char ch)
15.将字符串转换成字符数组:char[] toCharArray()