发表于: 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,这就是出现上面运行结果的原因。

---------------------------------------------------------------------------------------------------------




明天计划的事情:继续补充代码
遇到的问题:无
收获:上面写了


返回列表 返回列表
评论

    分享到