发表于: 2018-10-13 23:19:22
1 430
今天完成的事情:
---------------------------------------------------------------------------------------------------------
package com.itheima_06;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
//模拟用户登陆
public class ClientTest {
public static void main(String[] args) throws IOException {
// 创建客户端Socket对象
// Socket s=new Socket(InetAddress.getByName("SC-201809270308"),4444);
Socket s = new Socket("SC-201809270308", 4444);
// 获取用户名和密码
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入用户名");
String username = br.readLine();
System.out.println("请输入密码:");
String password = br.readLine();
// 获取输出流对象
// BufferedWriter bw=new BufferedWriter(new
// OutputStreamWriter(s.getOutputStream()));
PrintWriter out = new PrintWriter(s.getOutputStream(), true);
// 写出数据
out.println(username);
out.println(password);
// 获取输入流对象(接受服务器返回的信息)
BufferedReader serverBr = new BufferedReader(new InputStreamReader(s.getInputStream()));
// 获取服务器返回的数据
String result = serverBr.readLine();
System.out.println(result);
// 释放资源
s.close();
}
}
---------------------------------------------------------------------------------------------------------
package com.itheima_06;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.List;
public class ServerTest {
public static void main(String[] args) throws IOException {
// 创建服务器端Socket对象
ServerSocket ss = new ServerSocket(4444);
// 监听
Socket s = ss.accept();
// 获取输入流对象
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
// 获取用户名和密码
String username = br.readLine();
String password = br.readLine();
// 判断是否正确
boolean flag = false;
/*if ("SC-201809270308".equals(username) && "123456".equals(password)) {
flag = true;
}*/
List<User> users=UserDB.getUsers();
User user=new User(username,password);
if(users.contains(user)){
//匹配成功
flag=true;
}
// 获取输出流对象
PrintWriter out = new PrintWriter(s.getOutputStream(), true);
// 返回判断信息
if (true) {
out.println("登陆成功");
} else {
out.println("登录失败");
}
// 释放资源
s.close();
ss.close();
}
}
---------------------------------------------------------------------------------------------------------
package com.itheima_06;
public class User {
private String username;// 用户名
private String password;// 密码
public User() {
super();
// TODO Auto-generated constructor stub
}
public User(String username, String password) {
super();
this.username = username;
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
User other = (User) obj;
if (password == null) {
if (other.password != null)
return false;
} else if (!password.equals(other.password))
return false;
if (username == null) {
if (other.username != null)
return false;
} else if (!username.equals(other.username))
return false;
return true;
}
}
---------------------------------------------------------------------------------------------------------
package com.itheima_06;
import java.util.ArrayList;
import java.util.List;
public class UserDB {
private static List<User> users = new ArrayList<User>();
static{
users.add(new User("tony","111"));
users.add(new User("luci","222"));
users.add(new User("paul","333"));
users.add(new User("finn","444"));
}
public static List<User> getUsers(){
return users;
}
}
---------------------------------------------------------------------------------------------------------
java中的字符串是String类型,该类型直接继承Object对象。但String类型的某些特性会让人产生它属于值类型的错觉:
public class test1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str1 = "这是第一个字符串";
String str2 = str1; //把str1的引用传递给str2
System.out.println(str1.equals(str2)); //两个字符串的引用指向同一个内存地址
str2 = "这个第二个字符串"; //试图使用引用str2修改str1指向的对象
System.out.println(str1.equals(str2)); //两个字符串的引用不指向同一内存地址
}
}
12345678910111213
由于字符串是引用类型,将str1的引用传递给str2之后,两个字符串变量指向同一内存地址,修改str2的内容之后,str1和str2也应该指向同一内存地址。但实际的运行结果是修改str2内容以后,两个字符串变量指向不同的内存地址
运行后的结果如下:
这样的结果会让人产生错觉,误以为String属于值类型。分析其原因,是由于String类创建的字符串对象的不可修改的特性所致。使用String对类创建字符串对象后,就不能再做修改,若修改,则会马上生成新的字符串对象。在上面代码中,将“这是第二个字符串”赋值给str2,实际上是初始化一个新的字符串对象并赋值给了引用str2,这就是出现上面运行结果的原因。
---------------------------------------------------------------------------------------------------------
明天计划的事情:继续补充代码
遇到的问题:无
收获:上面写了
评论