栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java学习第三十天<运算符><断点调试><零钱通项目>

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java学习第三十天<运算符><断点调试><零钱通项目>

运算符
package chapter07.D8运算符;
//基本数据类型和引用数据类型判断==,equals只判断引用类型
public class Equals {
    public static void main(String[] args) {
        A a = new A();
        A b=a;
        A c=b;
        System.out.println(a==c);//判断地址
        System.out.println(b==c);
        B bobj=a;//向上编译
        System.out.println(bobj==c);//都指向同一A对象
        System.out.println("hello".equals("abc"));//ctrl+b看原码
        //String类的equals,把Object类中的equals方法重写,变成比较字符串的值是否相等
        
        String str1 = new String("zhengtu");
        String str2 = new String("zhengtu");//new以后地址变化
        System.out.println(str1==str2);//判断对象(地址)
        System.out.println(str1.equals(str2));
​
       // String str3 = new Object("kk");
        //Object类的equals是默认比较对象地址是否相同(是不是同一对象)
        
    }
}
class A extends B{
​
}
class B{
​
}

package chapter07.D8运算符;
​
public class EqualExercise {
    public static void main(String[] args) {
        Person person1 = new Person("jack", 10, '男');
        Person person2 = new Person("jack", 10, '男');
        System.out.println(person1.equals(person2));//若Person类里没有重写,用的是object里的equals,判断对象(地址)
​
    }
​
}
class Person{//extend object
    private String name;
    private int age;
    private char gender;
​
    public Person(String name, int age, char gender) {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }
​
    public String getName() {
        return name;
    }
​
    public int getAge() {
        return age;
    }
​
    public char getGender() {
        return gender;
    }
    public boolean equals(Object obj){//传进来person2
        if (this==obj){
            return true;
        }
        if (obj instanceof Person){
            //进行向下转型 因为需要obj的各个属性,在父类Object里没有,要强转
            Person p =(Person) obj;
            return this.name.equals(p.name)&&this.age==p.age&&this.gender==p.gender;//this指person1
        }else {
            return false;
        }
    }
}

package chapter07.D8运算符;
​
public class EqualExercise02 {
    public static void main(String[] args) {
        Person2 p1 = new Person2();
        p1.name="zhengtu";
        Person2 p2 =new Person2();
        p2.name="zhengtu";
        System.out.println(p1==p2);
        System.out.println(p1.name.equals(p2.name));
        System.out.println(p1.equals(p2));// Person2类没有重写,用的是object的equals,比较地址
​
        String s1=new String("uio");
        String s2=new String("uio");
        System.out.println(s1.equals(s2));//String类有重写,比较数值
        System.out.println(s1==s2);
    }
}
class Person2{
    public String name;
}

package chapter07.D8运算符;
//不同对象hashCode值不同,但hashCode值不能表示地址
public class HashCode {
    public static void main(String[] args) {
        AA aa = new AA();
        AA aa2 = new AA();
        AA aa3=aa;
        System.out.println(aa.hashCode());
        System.out.println(aa2.hashCode());
        System.out.println(aa3.hashCode());
​
    }
}
class AA{
​
}

package chapter07.D8运算符;
​
public class ToString {
    public static void main(String[] args) {
​
        
        Monster monster = new Monster("小妖怪", "巡山", 1000);
        System.out.println(monster.toString());//没重写走Object的toString()
        System.out.println(monster);//等价调用monster.toString()
​
    }
}
class Monster{
    private String name;
    private String job;
    private double sal;
​
    public Monster(String name, String job, double sal) {
        this.name = name;
        this.job = job;
        this.sal = sal;
    }
    //重写 toString方法 输出对象属性
​
​
    @Override
    public String toString() {//重写后,一般是把对象的属性值输出,也可自己定制
        return "Monster{" +
                "name='" + name + ''' +
                ", job='" + job + ''' +
                ", sal=" + sal +
                '}';
    }
}

package chapter07.D8运算符;
//实际开发中几乎不用,应付面试
public class Finalize {
    public static void main(String[] args) {
        Car bmw = new Car("宝马");
        bmw = null;//这时 Car对象就是一垃圾,垃圾回收期就会销毁该对象,在这之前会调用Finalize方法,在Finalize中可写业务如释放空间(数据库连接,或打开文件..)
        //若不重写Finalize,就会调用object类的Finalize,即默认处理
        //若重写了,则实现自己的逻辑
        System.gc();//主动调用垃圾回收器
        System.out.println("程序退出...");
    }
}
class Car{
    private String name;//属性,资源
    public Car(String name){
        this.name=name;
    }
    @Override
    protected void finalize() throws Throwable {
        System.out.println("我们销毁 汽车"+name);
        System.out.println("释放了某些资源");
    }
}

断点调试

F7 跳入

F8 逐行

shift+F8 跳出

F9 执行到下一个断点

package chapter08.D1断点调试;
​
public class Debug01 {
    public static void main(String[] args) {
        int res=0;
        for (int i = 0; i <5 ; i++) {
            res+=i;
            System.out.println("i="+i);
            System.out.println("sum="+i);
        }
        System.out.println("退出for....");
    }
}

package chapter08.D1断点调试;
​
public class Debug02 {
    public static void main(String[] args) {
        int []arr={1,10,-1};
        for (int i = 0; i <= arr.length ; i++) {
            System.out.println(arr[i]);
        }
        System.out.println("退出for");
    }
}

package chapter08.D1断点调试;
​
import java.util.Arrays;
//追原码 Setting>Build,Execution,Deployment>Debugger>Stepping 划掉java javax 可进原码
public class Debug03 {
    public static void main(String[] args) {
        int[] arr={1,-1,10,-20,100};
        Arrays.sort(arr);
        for (int i=0;i< arr.length;i++){
            System.out.print(arr[i]+"t");
        }
    }
}

package chapter08.D1断点调试;
​
import java.util.Arrays;
​
//执行到下一个断点
public class Debug04 {
    public static void main(String[] args) {
        int[] arr={1,-1,10,-20,100};
        Arrays.sort(arr);
        for (int i = 0; i  

package chapter08.D1断点调试;
//演示对象创建过程
public class DebugExercise {
    public static void main(String[] args) {
        
        Person jack = new Person("jack",20);
        System.out.println(jack);
    }
}
class Person{
    private String name;
    private int age;
​
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
​
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + ''' +
                ", age=" + age +
                '}';
    }
}

零钱通
package chapter09.D1零钱通;
​
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
​
public class Lingqiantong {
    public static void main(String[] args) {
        boolean flag=true;
       double sum=0.0;
        Date date = new Date();
        SimpleDateFormat sim = new SimpleDateFormat("yyyy-MM-dd H:m");
        Scanner myscanner = new Scanner(System.in);
        String detail="-------------零钱通明细------------";
        do {
            System.out.println("-------------零钱通菜单------------");
            System.out.println("ttt1 零钱通明细");
            System.out.println("ttt2 收益入账");
            System.out.println("ttt3 消费");
            System.out.println("ttt4 退出");
            System.out.println("请选择(1-4):");
        int num= myscanner.nextInt();
        switch (num) {
            case 1:
                System.out.println(detail);
                break;
            case 2:
                System.out.println("请输入入账金额:");
                double money = myscanner.nextDouble();
                if (money <= 0) {
                    System.out.println("输入金额必须大于0!");
                    break;
                }
                sum += money;
                detail += "n收益入账" + "t" + "+" + money + "t" + sim.format(date) + "t" + "余额:" + sum;
                break;
            case 3:
                System.out.println("请输入消费项目:");
                String a = myscanner.next();
                System.out.println("请输入消费金额:");
                double e = myscanner.nextDouble();
                if (e <= 0 || e > sum) {//是或不是与,与的话肯定不成立
                    System.out.println("输入金额必须在0-余额"+sum+"元之间!");
                    break;
                }
                sum -= e;
                detail += "n" + a + "t" + "-" + e + "t" + sim.format(date) + "t" + "余额:" + sum;
                break;
            case 4:
​
                String choice;//定义在外边,让两个if都能调用到
                while (true) {
                    System.out.println("确认退出吗?(y/n)");
                    choice = myscanner.next();
                    if ("y".equals(choice) || "n".equals(choice)) {//用myscanner.next()代替会输入两次
                        break;
                    }
​
                }
               if ("y".equals(choice)) {//Alt+shift+enter可以改错
                flag = false;
            }
                break;
            default:
                System.out.println("选择有误,请重新选择");
        }
​
        }while (flag);
        System.out.println("-----------零钱通已退出-----------");
    }
}

package chapter09.D1零钱通;
​
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
​
public class Lingqiantong2 {
    String detail="-------------零钱通明细------------";
    Scanner myscanner = new Scanner(System.in);
    boolean flag=true;
    double sum=0.0;
    Date date = new Date();
    SimpleDateFormat sim = new SimpleDateFormat("yyyy-MM-dd H:m");
​
  public void jiemian(){
      do {
          System.out.println("-------------零钱通OOP菜单------------");
          System.out.println("ttt1 零钱通明细");
          System.out.println("ttt2 收益入账");
          System.out.println("ttt3 消费");
          System.out.println("ttt4 退出");
          System.out.println("请选择(1-4):");
          int num= myscanner.nextInt();
          switch (num) {
              case 1:
                  detail();
                  break;
              case 2:
                  inmoney();
                  break;
              case 3:
                  outmoney();
                  break;
              case 4:
                  exit();
                  break;
              default:
                  System.out.println("选择有误,请重新选择");
          }
      }while (flag);
      System.out.println("-----------零钱通已退出-----------");
  }
  public void detail(){
      System.out.println(detail);
  }
  public int inmoney(){//有返回值,终止程序写return 0
      System.out.println("请输入入账金额:");
      double money = myscanner.nextDouble();
      if (money <= 0) {
          System.out.println("输入金额必须大于0!");
          return 0;
      }
      sum += money;
      detail += "n收益入账" + "t" + "+" + money + "t" + sim.format(date) + "t" + "余额:" + sum;
      return 0;
  }
  public void outmoney(){//void不返回值,终止程序可写return
      System.out.println("请输入消费项目:");
      String a = myscanner.next();
      System.out.println("请输入消费金额:");
      double e = myscanner.nextDouble();
      if (e <= 0 || e > sum) {//是或不是与,与的话肯定不成立
          System.out.println("输入金额必须在0-余额"+sum+"元之间!");
          return;
      }
      sum -= e;
      detail += "n" + a + "t" + "-" + e + "t" + sim.format(date) + "t" + "余额:" + sum;
  }
  public void exit(){
      String choice;//定义在外边,让两个if都能调用到
      //用myscanner.next()代替会输入两次
      do {
          System.out.println("确认退出吗?(y/n)");
          choice = myscanner.next();
​
      } while (!"y".equals(choice) && !"n".equals(choice));
      if ("y".equals(choice)) {//Alt+shift+enter可以改错
          flag = false;
      }
  }
}

package chapter09.D1零钱通;
​
import chapter09.D1零钱通.Lingqiantong2;
​
public class Test {
    public static void main(String[] args) {
        Lingqiantong2 test = new Lingqiantong2();
        test.jiemian();
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/775082.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号