Java学习之路 之 提问及解决篇
文章目录
- 一:static 为什么不能定义在方法里
- 二:“&&”与 “&”都表示”逻辑与“,那么它们之间的区别在哪里呢?
- 三:三元运算符的好处体现在哪里?
- 四:String-Builder与String 区别
- 五:Java 虚拟机内存消耗待尽,如何解决?
- 六:异常
- 七:集合与数组区别
- 八:为何需要实现Comparable接口,Comparable 接口的意义和用法
- 九:java中System.in.read();是什么意思
- 十:getClass()的作用
一:static 为什么不能定义在方法里
解答:
第一个方面:
static是成员变量及方法的修饰符,是属于类本身的数据字段
第二个方面:
在方法体中定义的变量称之为局部变量,方法体执行结束后,局部变量会自动销毁。
而static 定义的变量是一个静态的变量,它的作用肯定是为了让这个变量内外界都能被访问或读写,所以我们只能在类中去使用static 关键字
结论:
static关键字,只能用来定义成员变量和成员方法。
不能定义局部变量
二:“&&”与 “&”都表示”逻辑与“,那么它们之间的区别在哪里呢?
解答:
“&”会判断两边表达式是否都为true或flase,才会得出最终结果,被称为“非短路”运算符。
“&&”当第一个表达式为 false 时,则不会去判断第二个表达式,被称为“短路”运算符。
三:三元运算符的好处体现在哪里?
解答: 拿三元与 if 代码做比较如下
【1】
boolean b = 20<45?true:false;
【2】
if(20<45)
System.out.println(“true”);
else
System.out.println(“false”);
一行代码就解决了四行代码解决的问题
四:String-Builder与String 区别
“+”虽然可以附加新字符或字符串,但“+”会产生一个新的 String 实例,会在内存中创建新的字符串对象。如果重复地对字符串进行修改,将极大地增加系统开销。
那么我们要反复进行修改字符串,且不想大量消耗系统时该怎么做?
解决办法: 使用 String-Builder类,大大提高了频繁增加字符串的效率
五:Java 虚拟机内存消耗待尽,如何解决?
如果Java 虚拟机内存消耗待尽,它将不会执行垃圾回收处理,这种时候该怎么办呢?
解决: Java 提供了 System.gc() 方法来强制启动垃圾回收器
六:异常
class MyException extends Exception{ //创建自定义异常类String message; //定义 String 类型变量public MyException(String ErrorMessage) { //父类方法message = ErrorMessage;}public String getMessage() {return message;}
}public class Captor { //创建类static int quotient(int x,int y)throws MyException{ //定义方法抛出异常if(y<0) { //判断参数是否小于0throw new MyException("除数不能是负数"); //异常信息}return x/y;}public static void main(String[] args) {try { //try 语句包含可能发生异常的语句int result = quotient(3,0);}catch (MyException e) { //处理自定义异常System.out.println(e.getMessage());}catch(ArithmeticException e) { //处理 ArithmeticException 异常System.out.println("除数不能为0");}catch (Exception e) { //处理其他异常System.out.println("程序发生了其他的异常");}}}
提问: 我不太能理解,为什么我调用quotient()方法并传递3和0两个参数进去后,该方法明明是针对抛出异常交给 MyException 来进行处理
那么当经过代码 return x/y 时,会发生异常,但为什么却是交给 catch(ArithmeticException e) 这个语句块里执行,不太明白,明明不是抛出给MyException 来进行处理吗。
经过我自己的思考后,我是这么理解的:
角度一:
抛出的异常类型为 ArithmeticException 所以会交给catch(ArithmeticException e)来执行
角度二:
在代码执行中,若出现了系统自带的异常,则优先处理系统自带的,而不会交给抛出的指定异常类才处理。
角度三:
return x/y; 这条代码发生了异常,它并没有抛出给方法外给 MyException 来处理,而是由系统直接拦截后锁定为 ArithmeticException 异常类型后,所以会由catch(ArithmeticException e)来执行
七:集合与数组区别
1、数组的长度是固定的,集合的长度是可变的
2、数组用来存放基本类型的数据,集合用来存放对象的引用
八:为何需要实现Comparable接口,Comparable 接口的意义和用法
为何需要实现Comparable接口,Comparable 接口的意义和用法(这篇博客写的淋淋尽致,感谢博主分享)
九:java中System.in.read();是什么意思
System.in.read()可以实现输入字符,返回字符的Unicode码,但是缺点是只能输入一个字符
System.in.read() 返回的是输入数值的 ASKII 码(一个 int 整数)。
十:getClass()的作用
getClass() 返回此 Object 的运行时该对象的类. 该方法返回一个Class对象, 可以通过该对象可以获取某个类的相关信息, 如构造方法 属性 方法 等。
举例:
class Student{
…
}
那么:
Student s = new Student();
s.getClass() 得到的是内存中实实在在存在的Student 这个类
Java学习之路 之 提问及解决篇相关推荐
- Java学习之路——接口
Java学习之路--接口 概述 总所周知,我们是父母的孩子.我们的身上既继承了爸爸的基因也继承了妈妈的基因.这就是多继承. 然而在 Java 程序中,是不支持多继承的.Java 仅仅支持单继承.但是接 ...
- JAVA学习之路:不走弯路,就是捷径(一)
0.引言 在ChinaITLAB导师制辅导中,笔者发现问得最多的问题莫过于"如何学习编程?JAVA该如何学习?".类似的问题回答多了,难免会感觉厌烦,就萌生了写下本文的想法.到 ...
- 个人开发经历--我的java学习之路(学校篇)
个人开发经历--我的java学习之路(学校篇) 个人介绍: 姓名: 不在这里说明 联系信息: 个人历程 jdbc阶段 sql生成器 一代代码生成器 servlet阶段 servlet项目中,sql生成 ...
- 萌新的java学习之路——第一周
萌新的java学习之路--第一周 第一周的学习 这是我学习Java的第一周,写这个博客更多的时为了总结自己这一周的学习情况,如果有人看到我写的博客,有什么问题的话,可以问我.虽然我也是一个小白,但我会 ...
- Java学习之路-预科
Java学习之路-预科 第一章 学习计算机的基本知识 文章目录 Java学习之路-预科 前言 一.什么是计算机? 二.硬件及冯诺依曼结构 1.计算机硬件 1.1 计算机硬件组成 1.2 什么是装机 1 ...
- java学习之路目录(已完结)
java学习之路目录(持续更新中-) 第一阶段 javaSE(完结) 序号 标题 内容 001 java初识 java语言特点.体系结构.运行机制 002 java SE基础语法 注释.关键字.变量. ...
- java学习之路2--简单工厂模式实现饮料自动贩卖机
java学习之路2 用简单工厂模式实现饮料自动贩卖机 功能简介 具体实现 1.简单工厂模式 2.代码 总结 用简单工厂模式实现饮料自动贩卖机) 功能简介 接收用户输入的信息,选择购买的饮料. 可供选择 ...
- 我的Java学习之路2009-11-17
-------------------------------2009年3月19日开始----------------------------- 下载JDK Myeclipse Netbeans JB ...
- Java学习之路1——安装JDK1.8||安装idea2022||Java项目创建【重拾Java】
Java学习之路1--安装JDK1.8||安装idea2022[重拾Java] 前言 安装 安装JDK1.8 安装idea2022(JetBrains Toolbox) Java项目创建 创建 项目结 ...
- 菜鸟haqima的Java学习之路第一天
菜鸟haqima的Java学习之路第一天 导读:DOS命令 常用快捷键 Java的简单概述 (第一章 Java开发环境的搭建) 1.常用的DOS命令 1.1.怎么打开DOS命令窗口 win键+r(组合 ...
最新文章
- miniconda安装,及channels配置,安装其他软件
- 笔记本电脑投屏到电视_Thinkpad笔记本PC无线连接电视或投影机,性能稳定的商用投屏解决方案...
- swift版的GCD封装
- Ruby 101:重用、隐藏和多态
- 当年这个决定,让李飞飞奠定 AI 江湖的女王地位
- php通过ip地址查询位置,PHP通过IP获取地理位置
- ESXI5.1 数据备份与恢复
- 自定义“TB_定位访问”子类
- ArrayList Vector LinkedList 区别与用法
- python爬取酷狗音乐歌词_python爬虫教程:爬取酷狗音乐
- Bada学习-SDK的安装
- 如何跳过计算机配置直接开机,WIN7开机怎么跳过欢迎界面_win7怎样跳过电脑开机欢迎界面-win7之家...
- 三七女生节,解密阿里女程序员们的代码诗!
- wxj platte
- 基于JAVA心灵治愈服务平台计算机毕业设计源码+系统+数据库+lw文档+部署
- vb.net中关于byval和byref的使用
- google和edge浏览器崩溃,错误代码: STATUS_STACK_BUFFER_OVERRUN
- 再谈 Go 语言在前端的应用前景
- 【Python实战】再分享一款商品秒杀小工具,我已经把压箱底的宝贝拿出来啦~
- 教你如何完全解析Kotlin中的类型系统