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方法重写,变成比较字符串的值是否相等/*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学习第三十天<运算符><断点调试><零钱通项目>相关推荐
- Java学习日志(八): 可变参数,debug断点调试,静态导入,集合嵌套
JavaEE学习日志持续更新----> 必看!JavaEE学习路线(文章总汇) Java学习日志(八) 可变参数 debug断点调试 静态导入 集合嵌套 可变参数 JDK1.5之后的新特性 作用 ...
- JAVA学习笔记(三十九)-打印流
import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.PrintStream; i ...
- javaweb学习总结(三十九)——数据库连接池
javaweb学习总结(三十九)--数据库连接池 一.应用程序直接获取数据库连接的缺点 用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长.假设网站一天10 ...
- Java学习 第三章 数组(三)排序算法
** Java学习 第三章 数组(三)排序算法 ** 主要内容:排序算法.排序算法横向比较.Arrays工具类的使用.数组常见异常 1.数组中涉及到的常见算法:排序算法 1.1 排序算法分类:内部排序 ...
- JavaScript学习(三十八)—面向过程与面向对象
JavaScript学习(三十八)-面向过程与面向对象 一.程序设计语言中的两大编程思想:面向对象.面向过程 (一).面向过程 就是指完成某个需求的时候,先分析出完成该需求时所需要经历的步骤有哪些,然 ...
- java学习笔记2(datawhale教程):运算符和表达式、流程控制、数组
java学习笔记2(datawhale教程):运算符和表达式.流程控制.数组 文章目录 java学习笔记2(datawhale教程):运算符和表达式.流程控制.数组 一.运算符和表达式 1.数学函数与 ...
- 孤傲苍狼 只为成功找方法,不为失败找借口! javaweb学习总结(三十九)——数据库连接池 一、应用程序直接获取数据库连接的缺点 用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要
孤傲苍狼 只为成功找方法,不为失败找借口! javaweb学习总结(三十九)--数据库连接池 一.应用程序直接获取数据库连接的缺点 用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对 ...
- tensorflow学习笔记(三十二):conv2d_transpose (解卷积)
tensorflow学习笔记(三十二):conv2d_transpose ("解卷积") deconv解卷积,实际是叫做conv_transpose, conv_transpose ...
- Mr.J-- jQuery学习笔记(三十二)--jQuery属性操作源码封装
扫码看专栏 jQuery的优点 jquery是JavaScript库,能够极大地简化JavaScript编程,能够更方便的处理DOM操作和进行Ajax交互 1.轻量级 JQuery非常轻巧 2.强大的 ...
最新文章
- html5 lineheight属性,HTML中line-height的继承
- QListWidget 小练习
- Tomcat单向Https验证搭建,亲自实现与主流浏览器、Android/iOS移动客户端安全通信
- 服 务 器 时 间 设 置
- 【iBoard 电子学堂 / iCore核心板教程】【verilog / modelsim 基础例程】
- 基于Keras的LSTM多变量时间序列预测
- java高并发(三)并发编程的基础
- k8s包管理器helm_eShopOnContainers 知多少[10]:部署到 K8S | AKS
- Collecting package metadata (current_repodata.json): done Solving environment: failed with repodata
- SNF平台从sql server兼容oracle的处理方式和开发方式
- linux socket 面试题,面试题
- leetcode python3 简单题171. Excel Sheet Column Number
- 微软Silverlight 3正式版
- 拓端tecdat|基于R统计软件的三次样条和光滑样条模型数据拟合及预测
- 第十三章 Spring消息(待续)
- Python创建空DataFrame及添加行数据
- 华为路由器的静态路由之间的等价路由以及浮动路由
- java技术栈是什么_java技术栈必学有哪些?
- Spark开发环境的搭建(一)
- Mysql修改服务中可执行文件路径
热门文章
- 「译」更快的 async 函数和 promises
- Matlab使用imread出错原因 错误使用 fopen 文件名包含未包括在文件系统编码中的字符。某些操作可能无法按预期运行。出错 imread>get_full_filename (line
- error: non-const lvalue reference to type cannot bind to a value of unrelated type
- matlab/simulink电力电子仿真单相变压器设置
- android 之 静态内部类 单例模式
- switch语句计算折扣
- 智慧温室建造费用大揭秘
- 解决Hyper-V虚拟磁盘VHDX无法压缩/收缩(Compact)的故障
- PicklingError: Can‘t pickle <function <lambda>...attribute lookup <lambda> on __main__ failed
- LaTex常用数学符号大全