java实现客户端的登录与注册与服务器连接入门.docx
- 文档编号:11213979
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:43
- 大小:104.64KB
java实现客户端的登录与注册与服务器连接入门.docx
《java实现客户端的登录与注册与服务器连接入门.docx》由会员分享,可在线阅读,更多相关《java实现客户端的登录与注册与服务器连接入门.docx(43页珍藏版)》请在冰点文库上搜索。
java实现客户端的登录与注册与服务器连接入门
实现登陆与注册功能。
客户端与服务端连接的时候,就要提示客户端请选择功能。
客户端注册的时候,用户名与密码都是发送给服务端的,服务端需要把数据保存到服务端的文件上。
登陆:
登陆的时候客户端输入用户名与密码发送给服务端,服务端需要校验,返回结果给客户端。
userName="root"
password="123"
packagecn.itcast.review;
/*
三元运算符:
三元运算符的格式:
布尔表达式?
值1:
值2
教务系统
学生缴费
1
0
*/
publicclassDemo1{
publicstaticvoidmain(String[]args){
Stringstr="hello";
System.out.println(str.matches("\\w{6}")?
"正确":
"错误");
inta=3;
System.out.println(3>a?
"第一个":
"第二个");
inttemp=1;
System.out.println(temp==1?
"缴费":
"未缴费");
}
}
packagecn.itcast.review;
/*
continue:
跳过本次循环语句,继续下一次循环。
continue的作用范围:
只能适用于循环语句。
一旦执行了continue语句,那么在循环体内continue之后的循环语句跳过执行。
break:
用于结束一个循环语句或者是一个switch语句.
break作用范围:
只能用于循环语句或者是switch语句。
return
*/
publicclassDemo2{
publicstaticvoidmain(String[]args){
/*
*continue
*for(inti=0;i<5;i++){
if(i==1){
continue;
}
System.out.println("i="+i);
}
*/
//break
/*outer:
for(intj=0;j<2;j++){//j=0j=1
inner:
for(inti=0;i<3;i++){//i=0
System.out.println("helloworld");
breakouter;//结束当前所在的循环。
如果配合标识的使用,可以作用于外层的for循环。
}
}*/
for(inti=0;i<3;i++){
System.out.println("helloworld");
return;
}
System.out.println("哈哈");
}
}
packagecn.itcast.review;
/*
函数的重载:
在一个类中出现了两个或两个以上的同名函数称作为函数的重载。
函数重载的作用:
一个函数名可以应对各种不同类型的参数。
函数重载的要求
1.函数名一致。
2.形参列表不一致(形参的个数不一致或者是形参对应的类型不一致)
3.与返回值类型无关。
函数重写:
子父类出现了同名的函数称作为函数的重写。
函数重写必须要是在继承的关系才存在的。
函数重写的需求:
父类的功能无法满足子类的需求。
函数重写的要求
1.子父类的函数名与形参列表必须一致。
2.子类的权限修饰符必须要大于或者等于父类的权限修饰符。
3.子类的返回值类型必须要小于或者等于父类的返回类型。
4.子类抛出的异常类型必须要小于或者等于父类抛出的异常类型。
*/
classAnimal{
}
classCatextendsAnimal{}
classFu{
publicAnimaleat(intnum){
System.out.println("父类的eat方法");
returnnewAnimal();
}
}
classZiextendsFu{
publicAnimaleat(intnum){
System.out.println("子类的eat方法..");
returnnewAnimal();
}
}
publicclassDemo3{
publicstaticvoidmain(String[]args){
/*int[]arr={1,2,4};
double[]arr2={2.14,3.14,5.0};
sort(arr);
sort(arr2);*/
Ziz=newZi();
z.eat(11);
}
publicstaticvoidsort(int[]arr){
for(inti=0;i for(intj=i+1;j if(arr[i]>arr[j]){ inttemp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } } } } publicstaticvoidsort(double[]arr){ for(inti=0;i for(intj=i+1;j if(arr[i]>arr[j]){ doubletemp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } } } } } packagecn.itcast.review; importjava.util.Arrays; /* 冒泡排序: 相邻的两个元素比较,符合条件交换位置。 */ publicclassDemo4{ publicstaticvoidmain(String[]args){ int[]arr={2,5,10,8,1};//所谓的排序就是将一个个的最大元素放在对应的位置上。 for(intj=0;j //把最大值放在最后一个位置 for(inti=0;i //相邻的两个元素比较 if(arr[i]>arr[i+1]){ inttemp=arr[i]; arr[i]=arr[i+1]; arr[i+1]=temp; } } } /*//把老二放在倒数第二个位置上 for(inti=0;i //相邻的两个元素比较 if(arr[i]>arr[i+1]){ inttemp=arr[i]; arr[i]=arr[i+1]; arr[i+1]=temp; } } //把老三放在倒数第三个位置上 for(inti=0;i //相邻的两个元素比较 if(arr[i]>arr[i+1]){ inttemp=arr[i]; arr[i]=arr[i+1]; arr[i+1]=temp; } } //把老四放在倒数第四个位置上 for(inti=0;i //相邻的两个元素比较 if(arr[i]>arr[i+1]){ inttemp=arr[i]; arr[i]=arr[i+1]; arr[i+1]=temp; } } */ System.out.println("数组的元素: "+Arrays.toString(arr)); } } packagecn.itcast.review; /* 折半查找法(二分法): 折半查找法使用的前提是数据必须是有序的。 */ publicclassDemo5{ publicstaticvoidmain(String[]args){ int[]arr={12,15,17,19,30}; intindex=halfSearch(arr,0); System.out.println("idnex: "+index); } publicstaticinthalfSearch(int[]arr,inttarget){ intmax=arr.length-1; intmin=0; intmid=(max+min)/2; while(true){ if(target>arr[mid]){ min=mid+1; }elseif(target max=mid-1; }else{ returnmid; } //重新计算中间值 mid=(min+max)/2; //找不到 if(max return-1; } } } } packagecn.itcast.review; classPerson{ intid; Stringname; @Override publicStringtoString(){ return"编号: "+this.id+"姓名: "+this.name; } } publicclassDemo6{ publicstaticvoidmain(String[]args){ Personp=newPerson(); p.id=110; p.name="狗娃"; System.out.println(p); } } packagecn.itcast.review; importjava.io.BufferedReader; importjava.io.FileReader; importjava.io.IOException; /* 匿名对象: 没有引用类型变量指向的对象就称作为匿名对象。 匿名对象的主要作用: 简化书写。 匿名对象主要用于两种应用场景: 1.如果一个对象的方法只会调用一次的时候,然后该对象就不再使用了,这时候就就可以使用匿名对象。 2.作为参数传递。 */ publicclassDemo7{ publicstaticvoidmain(String[]args)throwsIOException{ //Runtimeruntime=Runtime.getRuntime(); //Runtime.getRuntime().exec("C: \\Windows\\notepad.exe"); //FileReaderfileReader=newFileReader("F: \\a.txt"); BufferedReaderbufferedReader=newBufferedReader(newFileReader("F: \\a.txt")); } } packagecn.itcast.review; /* 封装: 封装的步骤: 1.私有化要封装的属性。 2.根据需求提供对应的get或者是set方法。 封装的好处: 1.提高数据的安全性。 2.操作简单。 3。 隐藏实现。 封装一定会用的场景: 如果是实体类的成员属性,我们在现实开发中全部都封装起来。 */ classMember{ privateStringname; privateStringsex; publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ this.name=name; } publicvoidsetSex(Stringsex){ if("男".equals(sex)||"女".equals(sex)){ this.sex=sex; } } publicStringgetSex(){ returnsex; } } publicclassDemo8{ publicstaticvoidmain(String[]args){ Memberm=newMember(); m.setName("狗娃"); m.setSex("男"); } } packagecn.itcast.review; /* 构造代码块: 给对象进行统一的初始化工作。 应用场景: 如何创建任意对象的时候都需要调用某个方法为该对象进行初始化时,这时候就可以使用构造代码块。 静态代码块: 静态代码块是静态代码块所属的类被加载到内存的时候执行的。 静态代码块的应用场景: 以后主要用于准备一个项目的初始化工作。 比如: 从配置配置文件中读取数据库用户名与密码。 */ classBaby{ intid; Stringname; //构造代码块的代码其实是在构造函数中执行的。 { cry(); } static{ System.out.println("静态代码块执行了..."); } publicBaby(intid,Stringname){ this.id=id; this.name=name; } publicBaby(){ } publicvoidcry(){ System.out.println("哭..."); } @Override publicStringtoString(){ return"编号: "+this.id+"姓名: "+this.name; } } publicclassDemo9{ publicstaticvoidmain(String[]args){ Babyb1=newBaby(); Babyb2=newBaby(110,"狗娃"); } } packagecn.itcast.review; /* instanceof判断指定的对象是否属于某种类别。 instanceof使用前提: 判断的对象与类别必须存在继承或者实现的关系。 instanceof使用格式: 对象instanceof类别。 有多态才可能使用到instanceof关键字, 主要的应用场景: 数据类型强转之前的判断。 */ classFishextendsAnimal{ } classMouseextendsAnimal{} publicclassDemo10{ publicstaticvoidmain(String[]args){ /*Fishf=newFish(); Animala=newAnimal(); System.out.println("鱼是属于动物类吗? "+(finstanceofAnimal)); System.out.println("鱼是属于老鼠吗? "+(ainstanceofFish));*/ Animala=getAnimal (1); if(ainstanceofFish){ Fishf=(Fish)a; }elseif(ainstanceofMouse){ Mousem=(Mouse)a; } } publicstaticAnimalgetAnimal(inti){ if(i==0){ returnnewFish(); }else{ returnnewMouse(); } } } packagecn.itcast.review; importjava.util.ArrayList; importjava.util.LinkedList; /* 抽象类的应用场景: 描述一类事物的时候,如果该类确实存在某种行为,但是目前这种行为的是不具体的 这时候就可以把这种行为描述成抽象的行为,这时候使用抽象。 抽象类在现实开发中的应用场景: 父类私有的成员不能被继承。 继承的问题: 隐式继承。 */ //工作 classWorker{ privateStringname; publicvoidsetInfo(Stringname){ this.name=name; System.out.println("姓名: "+this.name); } } classTeacherextendsWorker{ } publicclassDemo11{ publicstaticvoidmain(String[]args){ Teachert=newTeacher(); //t.name="狗娃"; t.setInfo("老钟"); } } packagecn.itcast.review; importjava.util.ArrayList; importjava.util.Collections; importjava.util.LinkedList; importjava.util.List; /* 多态: 父类的引用类型变量指向了子类的对象,或者是接口的引用类型变量指向接口实现类的对象。 应用: 1.多态应用于形参类型的时候,可以接收更多类型的参数, sort(Listlist) sort(ArrayListlist) sort(LinkedListlist) 2.多态用于返回值类型的时候可以返回更多类型的参数。 迭代器的作用: 用于获取集合中的元素。 内部类: 内部类的好处: 内部类可以直接访问外部类的成员。 */ interfaceMyList{ ListsubList(intfromIndex,inttoIndex); } publicclassDemo12{ publicstaticvoidmain(String[]args){ /*Collections.sort(newArrayList()); Collections.sort(newLinkedList());*/ ArrayList list.add(10); list.add(19); list.add(12); list.add(6); Iterable List } } packagecn.itcast.review; importjava.awt.event.ActionEvent; importjava.awt.event.ActionListener; importjavax.swing.JButton; importjavax.swing.JFrame; /* 匿名对象: 没有引用类型变量指向的对象就称作为匿名对象。 匿名内部类: 没有类名的类就称作为匿名内部类。 匿名内部类使用前提: 必须存在继承或者实现关系。 因为匿名内部类没有类名,所以创建匿名内部类对象的时候就必须要借助与它父类的名字或者它父接口的名字来创建。 但是匿名内部类只不过是没有类名,其他的一概成员都是具备的。 匿名内部类的应用场景: 主要是作为参数传递使用。 */ interfaceDao{ publicvoidadd(); } classOuter{ publicvoidprint(){ newDao(){//这里不是创建接口的对象,是创建了Dao实现类的对象,但是这个类是一个匿名内部类而已,没有类名借用了父接口的名字而已。 //大括号中就写匿名内部类的成员。 intnum=10; @Override publicvoidadd(){ System.out.println("添加学生.."); } }.add(); } } publicclassDemo13{ publicstaticvoidmain(String[]args){ /*Outerouter=newOuter(); outer.print
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 实现 客户端 登录 注册 服务器 连接 入门