java详解第三章:流程控制与字符串处理

1.概述

       流程控制在任何编程语言中都是基础中的基础,再复杂的程序与算法都是由这些流程控制语言组合起来的。

2.流程控制方法

       Java流程控制包括顺序控制、条件控制和循环控制。

       最常见的控制方法就是顺序控制。顺序控制,就是从头到尾依次执行每条语句操作,没有任何的约束。

       条件控制,顾名思义,就是基于条件选择执行语句,比方说,如果条件成立,则执行操作A,或者如果条件成立,则执行操作A,反之则执行操作B。条件之间相互独立时,还可以表达为a条件满足时执行操作A,b条件满足时执行条件B,c条件满足时执行操作C……

       循环控制,又称为回路控制,根据循环初始条件和终结要求,执行循环体内的操作。

       下面重点介绍条件控制和循环控制的语法。

3.语法

       3.1判断语句

       要约束条件控制和循环控制,必须要有一定的约束条件。所谓约束条件,从根本上看就是一个布尔值(true/false)。最常见的返回布尔值的是判断语句。一般的判断符号有:>、>=、<、<=、==、!=(~=)。

       一个判断语句返回一个布尔值,如果每个条件之间有约束的话,那么这一个条件语句往往会包含多条条件语句。因此为了清晰表达多条与句之间的关系,我们需要关系符。常见的关系符有:与(&和&&),或(|和||),非(!和~)。

       ① &和&&

       这两个都表示与的关系,所判断得到的结果是一样的,如下表所示(A&B)

 

true

false

ture

ture

false

false

false

false

       当且仅当A和B均为真时,得到的结果才为真;否则得到的结果为假。

       &和&&得到的结果虽然一致,但是他们处理的过程是不一致的。A&B处理时,会首先判断A和B的真假性,带入上面的表格中得到相应的结果;而A&&B处理时,会先判断A的真假性,如果A为真则会再去判断B的真假性,带入上面的表格中得到结果。而如果A为假,那么不管B是否为真,结果都是假,所以不会去判断B的真假性而直接输出结果。因此&&又被称为短路与。

       ② |和||

       这两个都表示或的关系,所判断得到的结果是一样的,如下表所示(A|B)

 

true

false

ture

ture

ture

false

ture

false

       当且仅当A和B均为假时,得到的结果才为假;否则得到的结果为真。

       |和||的关系和&与&&的关系一致,||又称短路或,A||B会优先判断A,如果A为假才会继续判断B,否则直接输出结果为真。

       ③ ~和!

       这两个之间完全没有区别,都是表示非的意思,即将判断结果取反。

       3.2条件控制

       ①.if条件语句:关键词if

       if条件语句语法格式:

if(条件A){

       执行语句A;

}else if(条件B){

       执行语句B;

}else{

       执行语句C;

}

       ②.switch条件语句:关键词switch

       switch条件语句语法格式:

switch(变量A){

      case 值a:

       执行语句A;

      break;

      case 值b:

             执行语句B;

      break;

      case 值c:

             执行语句C;

      break;

      default:

             执行语句D;

      (break;)

}

       值得一提的是,switch-case语句中必须要有break,我们可以把switch语句想象成一条长廊,长廊左面一侧全是入口(case语句),右面一侧全是出口(break语句),一个入口对应一个出口,中间的过道是执行语句。正常人会从一个入口进,经过过道到另一个出口出。如果没有出口(break语句),那么这个人要出去,就会进入下一个过道,如果下一个过道仍然没有出口,则会进入再下一个,直到找到出口出去为止。那么在这个过程中,系统就会执行别的条件语句,就不符合switch语句的功能了。有兴趣的话可以试一试不加break语句,看看结果如何。

       3.3循环控制

       ①.for循环语句:关键词for

       for循环语句语法格式:

for(变量初始值;约束条件;循环结束后执行语句){

       执行语句;

}

       语句中一共有三个参数语句,每条语句之间用分号隔开。当约束条件满足时执行语句,不满足时跳出循环,执行后面的语句。

       ②.while循环语句:关键词while

       while循环语句语法格式:

while(条件A){

       执行语句A;

}

       程序刚运行到这条语句时会先判断条件A,结果为true时执行语句A,每次执行完后都会判断条件A,直到条件A不满足时跳出循环,执行后面的语句。

       ③.do-while循环语句:关键词do、while

       do-while循环语句语法格式:

do{

       执行语句B;

}while(条件B);

       程序刚运行到这条语句时会先执行语句A,每次执行完后都会判断条件A,直到条件A不满足时跳出循环,执行后面的语句。

       4.字符串处理

       String类适用于描述字符串事物,它也提供了多个方法对字符串进行操作。

       常用的方法如下:

       以下方法以字符串StringA = “abcdefgabcdefg”为例)

       4.1 获取:       

              4.1.1字符串中包含的字符数,也就是字符串的长度。

              intlength():获取长度。

              如:A.length()得到的值为14。

       4.1.2根据位置获取该位置上的某个字符。

              charcharAt(int index):返回指定索引处的char值。(index从0开始)

              如:A.charAt(3)得到的字符为d。

       4.1.3根据字符获取该字符在字符串的位置。

              intindexOf(String str):返回的是str在字符串中第一次出现的位置。

              intindexOf(char ch,int fromIndex):从fromIndex指定位置开始,获取ch在字符串中出现的位置。

              intlastIndexOf(int ch):反向索引一个字符出现的位置

              注意:str、ch都可以是String、char,当为String时,返回的是String中第一个字符的位置。如果返回-1表示该str 不在字符串中存在。

              如:A.indexOf(‘a’)得到的值为0;

               A.indexOf(“abc”,1)得到的值为7;

                     A.lastIndexOf(‘a’)得到的值为7。

       4.2 判断:

       4.2.1字符串中是否包含某一个子串。

              booleancontains(str);

              如:A.contains(‘x’)得到的是false;

              该语句还可表达为A.indexOf(‘x’)!=-1

       4.2.2字符中是否有内容。

              booleanisEmpty():原理就是判断长度是否为0.

       4.2.3字符串是否是以指定内容开头。

              booleanstartsWith(str);

              如:A.startsWith(“ab”)得到的是true。

       4.2.4字符串是否是以指定内容结尾。

              booleanendsWith(str);

       4.2.5判断字符串内容是否相同。重写Object类中的equals方法。

              booleanequals(str);

              如:A.equals(“ABCDEFabcdef”)得到的是false。

       4.2.6判断内容是否相同,并忽略大小写

              booleanequalsIgnoreCase();

              如:A. equalsIgnoreCase(“ABCDEFabcdef”)得到的是true。

       4.3 转换

       4.3.1将字符数组转换成字符串。

       构造函数:

              String(char[]):将字符数组按顺序组合成字符串

              String(char[],offset,count):将字符数组中以第offset个字符为始,取count个字符转换成字符串。

       静态方法:

              staticString copyValueOf(char[]);

              staticString copyvalueOf(char[] data, int offset, int count);

              与构造函数类似,这两个方法是将字符数组转换成字符串并输出。

       4.3.2将字符串转换成字符数组(重点)。

              char[]toCharArray();

       4.3.3将字节数组转换成字符串。

              String(byte[])

              String(byte[],offset,count):将字节数组中的一部分转换成字符串。

       4.3.4将字符串转换成字节数组

              byte[] getBytes();

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

              StringvalueOf(int);

              StringvalueOf(double);

       4.4 替换

              Stringreplace(oldchar,newchar);

              如:A.repalce(‘a’,’A’)得到的字符串为”AbcdefAbcdef”

       4.5 切割

              String[]split(regex);

              除了特殊字符(* ^ : | . \),其余的字符直接输入,可以将字符串根据这些字符分割成多条字符串,多个字符可以用|分 隔。

              如:

Stringaddress1=”江苏省,淮安市,清河区”;

Stringaddress2=”江苏省\淮安市\清河区”;

Stringaddress3=”江苏省|淮安市|清河区”;

Stringaddress4=”江苏省:淮安市:清河区”;

Stringaddress5=”江苏省^淮安市^清河区”;

Stringaddress6=”江苏省*淮安市*清河区”;

Stringaddress7=”江苏省.淮安市.清河区”;

Stringaddress8=”江苏省^淮安市@清河区”;

String[]Address1=address1. Split(“,”);

String[]Address2=address2. Split(“\\”);

String[]Address3=address3. Split(“\\|”);

String[]Address4=address4. Split(“\\:”);

String[]Address5=address5. Split(“\\^”);

String[]Address6=address6. Split(“\\*”);

String[]Address7=address7. Split(“\\.”);

String[]Address8=address8. Split(“\\^|@”);

以上字符创数组的内容完全一致:

Address1[0]=”江苏省”;

Address1[1]=”淮安市”;

Address1[2]=”淮阴区”;

       4.6 子串

       获取字符串中的一部分

              Stringsubstring(begin);

              Stringsubstring(begin,end);

              如:A.substring(10)得到的字符串为”defg”

                     A.substring(8,10) 得到的字符串为”bcd”

       4.7 转换,去除空格,比较

       4.7.1将字符串转成大写或者小写。

              String toUpperCase();

              String toLowerCase();

       4.7.2将字符串两端的多个空格去除。

              String trim();

       以上,便是我对流程控制与字符串处理相关知识与概念的理解和概括。欢迎大家在评论里讨论!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值