Java学习 第三章 java基础(四)
相关知识点:if、Switch、循环结构语句,java数组,String,异常处理
一、if判断语句
1、if语句用于判断不同的条件,根据判断的结果执行不同的代码。
2、if语句判断的条件可以是关系运算、逻辑运算,if语句根据逻辑值true、false来决定执行不同的代码。
3、if语句在开发中使用极为广泛。
if语句的格式
//条件表达式可以是关系运算、逻辑运算、甚至是逻辑变量,还可以是逻辑值true或false
if(条件表达式){
条件表达式结果是true时,执行本代码块
}else{
条件表达式结果是false时,执行本代码块
}
if嵌套语句
if(条件表达式1){
条件表达式1结果是true时,执行本代码块
}else if(……){
…..
}else if(条件表达式n){
条件表达式n结果是true时,执行本代码块
}
else{
条件表达式n结果都是false时,执行本代码块
}
二、Switch语句
1、switch语句称为情况选择语句,又称开关语句。
2、switch是分支语句的一种,用于对多种情况进行不同处理的语句。
3、JDK1.7之前的switch语句限定对整形数据进行判断。JDK1.7开始提供对String类型判断。
switch 语句格式
switch(表达式){
case 常量值1:
代码块1;
break;
case 常量值2:
代码块2;
break;
……
default:
以上常量值均不是时,执行本代码。
}
不用break会出现“贯穿”问题,直接执行下一步。
三、循环结构语句
1、while循环
格式:
while(循环继续的条件表达式){
循环体(循环内容)
}
2、do while语句
格式:
do{
循环内容
}while(循环继续的条件表达式);
3、for循环语句
格式:
for(循环变量初始化;循环继续的条件表达式;循环变量值变更){
循环内容
}
初始化可以定义多个循环变量
eg :
for(int i=1.j=1;i<=20&&j<=30;i++,j+=2){
循环内容
}
四、java数组
1、数组的定义
数组是有序数据的集合,数组中的每个元素具有相同的数组名和下标来做唯一标识;
2、数组的分类
一维数组、二维数组、多维数组;
3、数组的声明和内存分配
-
-
- 声明方式一:type arrayName[];
- 声明方式二:type[] arrayName;
-
为数组分配内存空间,如果不分配内存,将不能访问它的任何元素。我们将使用new关键字来为数组分配内存空间;
eg : int score[];
score = new int[3];//实例化,内存分配
4、数组的静态初始化
数组初始化分为两种方式:
-
-
- 动态初始化
- 静态初始化
-
静态初始化是指:在数组创建之初直接指定其内容;
eg : int score[] = {2,3,4,5};
5、冒泡排序
eg : int score[] = {10,53,67,24,30};
for(int i = 0; i < score.length-1; i++){
for(int j = i+1;j < score.length; j++){
if(score[i] < score[j]){
int temp = score[i];
score[i] = score[j];
score[j] = temp;
}
}
}
6、二维数组
如果把一维数组看成线性图形,那么二维数组就是一个平面图形
二维数组的声明和一维数组类似,内存分配也是使用new关键字。
声明与分配内存:
-
-
- 声明: type arrayName[][];
- 初始化: arrayName = new type[行][列];
-
二维数组静态初始化:
type arrayName[][] = {{value},{value},{value}};
eg : int score[][] = {{10,20},{21,22},{30,31,45}};
五、Java String字符串
1、实例化String对象:
-
-
- 直接赋值
- 使用关键字new,内存分配图如下图,会多分配一个,所以直接赋值的方式比较多
-
2、String的内容比较
使用equals()方法比较字符串;
eg : String str = “hello”;
String str1 = new String(“hello”);
比较 str.equals(str1)
“==” 比较的是地址,“equlas”比较的内容;
3、字符串内容不可更改
eg : String str = “hello”;
String str1 = str + “world”;
地址指向图:
3、String字符串常用方法
-
-
- 字符串长度:length()方法
- 字符串转换成数组: toCharArray()方法
- 从字符串中取出指定位置的字符: charAt()
- 字符串与byte数组的转换:getBytes()
- 过滤字符串中存在的字符:indexOf()
- 去掉字符串的前后空格: trim()
- 从字符串中取出子字符串: subString()
- 大小写转换:toLowerCase() toUpperCase()
- 判断字符串的开头结尾字符:endWith() startWith()
- 替换String字符串中的一个字符: replace()
-
4、StringBuffer
缓冲区,本身也是操作字符串,但是与String不同,StringBuffer是可以更改到.StringBuffer是一个操作类,所以必须通过实例化进行操作。
eg :
StringBuffer sb = new StringBuffer();
sb.append(“hello”);
tell (sb)
System.out.println(sb.toString());
public static void tell(StringBuffer s){
s.append(“world”);
}
如果StringBuffer 换成String,打印s不会改变
StringBuffer常用方法
-
-
- append() 追加
- insert() 添加
- replace() 替换
- indexOf() 过滤字符串中存在的字符
-
StringBuffer类的应用:
eg : String str = “hello”;
for(int i = 0; i < 100; i++){
str = str +i;// 开辟很多空间,耗费资源
}
eg : StringBuffer str = “hello”;
for(int i = 0; i < 100; i++){
str.append(i);// 比String快很多
}
5、StringBuilder
一个可变的字符序列,该类被设计作用StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候,建议优先考虑该类,速度比StringBuffer要快。
但是如果设计到线程安全方面,建议使用StringBuffer。
常用方法:
-
-
- append()
- insert()
-
六、java 异常处理
1、异常是导致程序中断运行的一种指令流,如果不对异常进行正确处理,测可能导致程序的中断执行,造成不必要的损失。
eg : java.lang.NullPointerException 空指针异常
异常格式:
try{
异常语句
}catch(Exception e){
}finally{
一定会执行的代码
}
catch语句可以是多个
2、常见异常
-
-
- 数组越界异常:ArrayIndexOutOfBoundsException
- 数字化异常:NumberFormatException
- 算数异常:ArithmeticException
- 空指针异常:NullPointerException
-
等等
3、throws关键字
在定义一个方法的时候可以使用throws关键字声明,使用throws声明的方法表示此方法不处理异常,抛给方法的调用者处理, 如果是主方法抛出异常,则交给JVM处理。
格式:
public void tell() throws Exception{}
eg :
4、throw关键字
throw关键字抛出一个异常,抛出的时候直接抛出异常类的实例化对象即可;
5、自定义异常
自定义异常直接继承Exception就可以完成自定义异常类;
参考:极客学院课程 http://ke.jikexueyuan.com/zhiye/javaweb/