运算符

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方法重写,变成比较字符串的值是否相等/*public boolean equals(Object anObject) {if (this == anObject) {//重写部分,判断是否同一对象return true;}if (anObject instanceof String) {String anotherString = (String)anObject;int n = value.length;if (n == anotherString.value.length) {char v1[] = value;char v2[] = anotherString.value;int i = 0;while (n-- != 0) {if (v1[i] != v2[i])return false;i++;}return true;}}return false;}
​*/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是默认比较对象地址是否相同(是不是同一对象)/*原码public boolean equals(Object obj) {return (this == obj);}*/}
}
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 objectprivate 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){//传进来person2if (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) {
​/*Object的toString()原码(1)getClass().getName()类的全类名(包名+类名)(2)Integer.toHexString(hashCode()) 将对象的hashCode值转成16进制字符串public String toString() {return getClass().getName() + "@" + Integer.toHexString(hashCode());}*/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方法 输出对象属性
​
​@Overridepublic 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;}@Overrideprotected 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 <arr.length ; i++) {System.out.println(arr[i]+"\t");}System.out.println("hello100");System.out.println("hello200");System.out.println("hello300");System.out.println("hello400");System.out.println("hello500");System.out.println("hello600");System.out.println("hello700");}
}
package chapter08.D1断点调试;
//演示对象创建过程
public class DebugExercise {public static void main(String[] args) {/*创建对象流程1 加载Person类信息2 初始化 2.1默认初始化 2.2显示初始化 2.3构造器初始化3 返回对象地址*/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;}
​@Overridepublic 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("\t\t\t1 零钱通明细");System.out.println("\t\t\t2 收益入账");System.out.println("\t\t\t3 消费");System.out.println("\t\t\t4 退出");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("\t\t\t1 零钱通明细");System.out.println("\t\t\t2 收益入账");System.out.println("\t\t\t3 消费");System.out.println("\t\t\t4 退出");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 0System.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不返回值,终止程序可写returnSystem.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();}
}

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

  1. Java学习日志(八): 可变参数,debug断点调试,静态导入,集合嵌套

    JavaEE学习日志持续更新----> 必看!JavaEE学习路线(文章总汇) Java学习日志(八) 可变参数 debug断点调试 静态导入 集合嵌套 可变参数 JDK1.5之后的新特性 作用 ...

  2. JAVA学习笔记(三十九)-打印流

    import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.PrintStream; i ...

  3. javaweb学习总结(三十九)——数据库连接池

    javaweb学习总结(三十九)--数据库连接池 一.应用程序直接获取数据库连接的缺点 用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长.假设网站一天10 ...

  4. Java学习 第三章 数组(三)排序算法

    ** Java学习 第三章 数组(三)排序算法 ** 主要内容:排序算法.排序算法横向比较.Arrays工具类的使用.数组常见异常 1.数组中涉及到的常见算法:排序算法 1.1 排序算法分类:内部排序 ...

  5. JavaScript学习(三十八)—面向过程与面向对象

    JavaScript学习(三十八)-面向过程与面向对象 一.程序设计语言中的两大编程思想:面向对象.面向过程 (一).面向过程 就是指完成某个需求的时候,先分析出完成该需求时所需要经历的步骤有哪些,然 ...

  6. java学习笔记2(datawhale教程):运算符和表达式、流程控制、数组

    java学习笔记2(datawhale教程):运算符和表达式.流程控制.数组 文章目录 java学习笔记2(datawhale教程):运算符和表达式.流程控制.数组 一.运算符和表达式 1.数学函数与 ...

  7. 孤傲苍狼 只为成功找方法,不为失败找借口! javaweb学习总结(三十九)——数据库连接池 一、应用程序直接获取数据库连接的缺点   用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要

    孤傲苍狼 只为成功找方法,不为失败找借口! javaweb学习总结(三十九)--数据库连接池 一.应用程序直接获取数据库连接的缺点 用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对 ...

  8. tensorflow学习笔记(三十二):conv2d_transpose (解卷积)

    tensorflow学习笔记(三十二):conv2d_transpose ("解卷积") deconv解卷积,实际是叫做conv_transpose, conv_transpose ...

  9. Mr.J-- jQuery学习笔记(三十二)--jQuery属性操作源码封装

    扫码看专栏 jQuery的优点 jquery是JavaScript库,能够极大地简化JavaScript编程,能够更方便的处理DOM操作和进行Ajax交互 1.轻量级 JQuery非常轻巧 2.强大的 ...

最新文章

  1. html5 lineheight属性,HTML中line-height的继承
  2. QListWidget 小练习
  3. Tomcat单向Https验证搭建,亲自实现与主流浏览器、Android/iOS移动客户端安全通信
  4. 服 务 器 时 间 设 置
  5. 【iBoard 电子学堂 / iCore核心板教程】【verilog / modelsim 基础例程】
  6. 基于Keras的LSTM多变量时间序列预测
  7. java高并发(三)并发编程的基础
  8. k8s包管理器helm_eShopOnContainers 知多少[10]:部署到 K8S | AKS
  9. Collecting package metadata (current_repodata.json): done Solving environment: failed with repodata
  10. SNF平台从sql server兼容oracle的处理方式和开发方式
  11. linux socket 面试题,面试题
  12. leetcode python3 简单题171. Excel Sheet Column Number
  13. 微软Silverlight 3正式版
  14. 拓端tecdat|基于R统计软件的三次样条和光滑样条模型数据拟合及预测
  15. 第十三章 Spring消息(待续)
  16. Python创建空DataFrame及添加行数据
  17. 华为路由器的静态路由之间的等价路由以及浮动路由
  18. java技术栈是什么_java技术栈必学有哪些?
  19. Spark开发环境的搭建(一)
  20. Mysql修改服务中可执行文件路径

热门文章

  1. 「译」更快的 async 函数和 promises
  2. Matlab使用imread出错原因 错误使用 fopen 文件名包含未包括在文件系统编码中的字符。某些操作可能无法按预期运行。出错 imread>get_full_filename (line
  3. error: non-const lvalue reference to type cannot bind to a value of unrelated type
  4. matlab/simulink电力电子仿真单相变压器设置
  5. android 之 静态内部类 单例模式
  6. switch语句计算折扣
  7. 智慧温室建造费用大揭秘
  8. 解决Hyper-V虚拟磁盘VHDX无法压缩/收缩(Compact)的故障
  9. PicklingError: Can‘t pickle <function <lambda>...attribute lookup <lambda> on __main__ failed
  10. LaTex常用数学符号大全