编程:java字符串、多线程介绍

上传人:da****ge 文档编号:243141669 上传时间:2024-09-16 格式:PPT 页数:22 大小:358KB
返回 下载 相关 举报
编程:java字符串、多线程介绍_第1页
第1页 / 共22页
编程:java字符串、多线程介绍_第2页
第2页 / 共22页
编程:java字符串、多线程介绍_第3页
第3页 / 共22页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,Java,组第,3,次交流讲件,字符串,线程,熊斌斌,Vincy,http:/, 和,可变字符串(,StringBuffer,),“,abcdefghijklmnopqrstuvwxyz,”,Java,中的字符串实例是对象,不同于基本的数据类型。,定长字符串,概念:字符串对象创建后其值将不可改变,但是可以通过修改原字符串来创建新的定长字符串,即对定长字符串的操作会产生一个新的字符串。定长字符串的操作封装在,String,类中。,初始化方式:主要有两种,一种是常值赋值,另一种是利用,String,类的构造方法来进行赋值。,如:,String,Str,=“,hello,Vincy,!”,;,String Srt=new,String(“hello,Vincy,!”,);,定长字符串构造方法,显然常值赋值和构造赋值是有区别的,构造赋值拥有许多的功能。,String,类的构造方法有,9,个之多。,主要形式是,String(Valuetype,value,int,offset,int,length,String,charsetName,),如,String(byte,bytes,int,4,int8,String,charsetName,),将,byte,型数组的从第,4,位开始的,8,个数按照,charsetName,(即指定的字符集)产生一个字符串对象。,其中,Valuetype,有,byte,和,char,两种,前者多为数值型数组,后者为字符数组。,其构造功能多为转化数成字符串并生成对象。,定长字符串类的特有方法,目前,String,类的特有方法(,StringBuffer,类所没有的)非常多,下面列出几个:,char ,toChararray,(),将字符串转化成字符数组,String,concat(String,str,),字符串连接合并,boolean,equals(Object,anObject,),判断两个字串是否大小相等,大小写敏感,String,replace(char,oldChar,char,newChar,),用字符,newChar,替换字符串中所有的字符,oldChar,,并返回一个新串,可变字符串,概念:可变字符串是指字符串对象创建后其值可以改变,而且修改后不会创建新的字符串。其实质是有一块可操作的内存区,可以对该内存区中存放的字符进行操作,所以可以改变其值和长度。可变字符串封装在,StringBuffer,类中。,初始化方式:可变字符串对象的产生只能使用,StringBuffer,类的构造方法,如:,StringBuffer,strBuff,= new,StringBuffer,(“,hello,,,Vincy,!”),可变字符串构造方法,可变字符串的构造方法只有三个:,序号,方法,功能说明,1,StringBuffer,(),产生一个空字符串对象,容纳默认的,16,个字符。,2,StringBuffer(int,length),产生一个空字符串对象,容纳,length,个字符。,3,StringBuffer(String,str,),从定长字符串中取值,生成一个可变字符串。,可变字符串的特有方法,目前,StringBuffer,类的特有方法(,String,类所没有的)非常多,下面列出几个方法:,StringBuffer,reverse(),将原字符串反序,StringBuffer,append(ValueType,b),将,VT,值,b,转换成字符串添加到原字符尾部,(,boolean,char double float,int,long),StringBuffer,replace(int,start,int,end,String,str,),将原字符串从,start,位置到,end,位置的字符串替换成字符串,str,两种字符串的共有方法,序号,方法,功能说明,1,char,charAt(int,index),取,index,位置上的字符,2,int,indexOf(String,str,),返回子字符串,str,在字符串中第一次出现的位置,3,int,indexOf(String,str,int,f),返回子字符串,str,在字符串中出现的位置,从,f,位置向右找,4,int,lastIndexOf(String,str,),返回子字符串,str,在字符串中出现的位置,从右向左找,位置的编号不变,5,int,lastIndexOf(String,str,int,f),返回子字符串,str,在字符串中出现的位置,从,f,处向左找,位置的编号不变,6,int,length(),返回字符串的长度,7,String,substring(int,be),返回原字符串从,be,位置开始到结尾的子字符串,8,String,substring(int,be,int,en),返回原字符串从,be,位置到,en,位置的子字符串取,前不去后,9,CharSequence,subSequence(int,be,int,en),返回一个字符序列,字符串应用实例,字符串反序,分离字符串中的字符,电子邮箱验证,字符串反序,需求: 从键盘输入一个字符串,然后将其反序输出。,如“,hello,,,Vincy,!”,输出为“!,ycniV,,,olleh,”,public class Reverse,pulic,static void,main(String,arg,),String Org=arg0;/,接受键盘输入的字符串,char,charArray,=,Ori.toCharArray,();/,转化为字符数组,String Vas=“”;/,用来储存转序后的字符串,for (,int,k=charArray.length-1;k-1;k-),Vas+=,charArrayk,;/,转序,System.out.println(Vas,);,Clickhere,分离字符串中的字符,需求: 从键盘输入一个字母、数字、汉字组成的混合字符串,然后将各个字符分拣出来并输出。,如:输入“,19,你,he,好芬,l,奇,lo9Vin2c0y306”,,输出“,19920306”,、“,helloVincy,”,、“你好芬奇”,clickhere,public class Hello,public static void,main(String,args,),String s1=“”;,String s2=“”;,String s3=“”;,char a;,for(int,i=0;i=48&a=65&a=97&a=122),s2+=a;,else s3+=a;,System.out.println,(“,生日为:”,+s1);,System.out.println,(“,字母为:”,+s2);,System.out.println,(“,汉字为:”,+s3);,电子邮箱验证,需求:从键盘输入一个电子邮箱地址,然后判断其合理性。,分析:合理的邮箱址应具有“,”,和“,.”,且“,”,不应出现在首位,其后至少要有一个“,.”,(最后一个“,.”,后面的形式也是有规定的,但是域名尾种类较多,此处不方便规范,于是忽略这条限制),clickhere,public class,Checkemail,public static void,main(String,arg,),boolean,token=true;,int,a=arg0.indexOf();,if(a,=0|a=arg0.length()-1) token=false;,int,b=arg0.substring(a).indexOf(.);,if(b,=0|b= arg0.substring(a).length()-1)/,运用,substring,方法,token=false; /,读取的是邮箱地址,if(token,),System.out.println,(,邮箱地址合法,);,else,System.out.println,(,邮箱地址不合法,);,多线程,多线程的意义,一个进程就是一个执行中的程序,每个程序都有自己独立的内存空间和一组系统资源,每个进程的内部数据和状态时完全独立的。,线程与进程相似,是一个执行的程序,是程序中单个顺序的流控制。但与进程不同的是,同一个进程的多个线程共享一块内存空间和一组系统资源;而线程本神的数据通常只有微处理器的寄存器数据,以及一个供程序执行时使用的堆栈。所以,线程也被称为轻负荷进程。线程是真正的功能提,一个进程中可以包含多个线程,Java,程序通过流控制来执行程序流,程序中单个顺序的流控制称为线程,多线程是指在单个程序中可以同时运行多个不同的线程,多线程的好处与实现,使用多线程的目的一般有两个:一是多个线程分别执行不同的任务;二是多个线程共同完成同一个任务,可提高效率。,实现:有两种方法,一是继承,Thread,类,二是实现,Runable,接口。,多线程有两种类型,一是多个线程分别执行不同任务,另一个是多个线程共同完成同一个任务。,实现的代码形式,1.,继承,Thread,类,class,MyThread,extends,Thread ,public void run,() /,这里写上线程的内容,public static void,main(String,args,) ,/,使用这个方法启动一个线程,new,MyThread().start,();, ,2.,实现,Runnable,接口,class,MyThread,implements,Runnable,public void run() /,这里写上线程的内容,public static void,main(String,args,) ,/,使用这个方法启动一个线程,new,Thread(new,MyThread().start,();, ,这里主要介绍,Thread,类的继承,完成不同任务,在完成不同任务的多线程中,每个线程所执行的任务不同。,例如编写一个程序,其中一个线程计算,1,到,50,的和,另一个线程计算,51,到,100,的和,分别将计算结果输出。,两个线程分别执行不同的任务,public class TestThead1,public static void,main(String,arg,),MyThread1 mt1=new MyThread1(“Thread1”,1,50);/*,实例化线程*,/,mt1.start();/,启动第一个线程,new MyThread1(“Thread2”,51,100).start();/*,匿名启动第二个线程*,/ /,主类结束,/,线程类,class MyThread1,extends,Thread,private,int,begin,end,sum,;,public MyThread1(String,name,int,begin,int,end),super(name,);,this.begin,=begin;,this.end,=end;/,构造方法结束,public void run,(),sum=0;,for(int,i=,begin;i,=,end;i,+) sum+=I;,System.out.println(getName,()+”,线程的计算结果为,:”+sum);,完成同一任务,在完成同一任务的多线程中,首先将任务分解,然后每个每个线程完成一个子任务,则原来的任务也完成。,例如:编写一个多线程程序,计算,1,到,100,的和,其中一个线程计算,1,到,50,的和,另一个线程计算,51,到,100,的和,计算完成后,将两个线程的计算结果相加后输出。,完成同一任务的多线程,public class TestMyThread2 /,执行主类,public static void,main(String,arg,),ThreadData,data=new,ThreadData,();,new MyThread2(“Thread1”,1,50,data).start()/,匿名启动第一个线程,new MyThread2(“Thread2”,51,100,data).start()/,匿名启动第二个线程,while(true,),if (,data.getFlag,()=2),System.out.println,(“,计算结果为:”,+,data.getSum,();,break;,/while ,class MyThread2,extends,Thread,private,int,begin,end,sum,;,private,ThreadData,data;,public MyThread2(String,name,int,begin,int,end,ThreadData,),super(name,);,this.begin,=begin;,this end=,end,;,this data=,data,;,public void run,(),sum = 0;,for(int,i=,begin;i,=,end;i+)sum,+=I;,data.setSum(sum,);,class,ThreadData, /,数据类,private,int,sum=0,flag=0;,public void,setSum(int,value),this.sum,+=value; flag+;,public,int,getSum()return,this.sum,;,public,int,getFlag()return,this.flag,;,Finish,字符串,线程,熊 斌 斌,Vincy,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!