java自学难点_学习JAVA遇到的难点总结
1.Scanner对象
我们都知道使用”Scanner scanner=new Scanner(System.in);“来进行输入,但如果我们只设置一个scanner对象,
即用来输入String型的数据,又用来输入int型的数据会怎样呢?
答案是出错!每一个Scanner对象只能用来输入一种类型的数据,想输入String就创建一个 stringInput对象只用来输入
String数据。绝对不可以在用来输入其他数据!
我们也可以通过String name=new Scanner(System.in).next();的方法进行输入,每要输入一个数据,就新建
一个Scanner对象。
2.关于static
最基本的我们都知道static方法只能引用static型的数据,而实例方法既能引用一般数据,也能引用static数据。
下面两个例子是我在编程中遇到的关于static问题。
例1:
我们要创建一个test类,可以时刻追踪到test类创建了多少个对象。
class test{
int sum=0;
test(){ ++sum;System.out.ptintln("test类共创建了"+sum+"个对象!");}
}
在主类的方法中测试test test1=new test();test test1=new test();test test1=new test();
当创建一个对象是都会输出“test类共创建了1个对象!”这是为什么呢?
因为每次创建类时sum都会被初始化为0,即每次都会为sum重新开辟一个内存空间,所以每次执行都会输出1.
解决方法:把sum设置为static型, static int sum=0;
这样每次创建test对象时,sum的内存被固定,可以正确记录test创建了多少个对象!
例2:
我们定义一个A类,
A{
private static int sum=0;
public static void addAuto(){sum=sum+10;}
}
然后定义B和C类,B extends A{}, C extends A{}; B和C类和A相同。
这是我们用A的对象引用B C的对象(根据多态性): A a1=new B();A a2=new C();
a1.addAuto();System.out.println(a1.sum);//结果为10
a2.addAuto();System.out.println(a2.sum);//结果为20 ???
我们新建了两个对象,a1和a2的结果应该是相同的,为什么a2中的sum值会是20呢?
因为A中为static方法,我们创建的a1的内存为10;在创建一个a2,此时a2的内存是20,它继承了a1,
所以会在a1的基础上继续+10.
3.关于JAVA类数组
对于一些类似于学生管理系统或者客户管理系统,可能需要我们设置一个数组,用来存一定数量的信息,
用来实现增删改查。如一个student类,来创建一个学生类数组students[];
如果增添一个学生信息,我们是否可以直接利用下面的方法呢?
students[0].setName(new Scanner(System.in).next());//输入一个学生的姓名
students[0].setId(new Scanner(System.in).nextInt());//学号
students[0].setScore(new Scanner(System.in).nextInt());//分数
答案是不能!对于students数组,我们只是声明,并没有为其分配内存空间,所以类似于链表的节点,
我们需要创建一个中介student mid=new student();然后给mid进行上面的输入操作,然后把mid赋给
students[0]。
4.
对于两个字符判断是否相等,我们习惯用下面的方法:
String str1="JAVA";
String str2=new Scanner(System.in).next();
if(str1==str2){.....}
这种方法是错误的,在我们运行程序过程中不难发现。在JAVA中判断两个字符串相等是不可以用==的方法。
而是通过if(str1.equals(str2)){.....}
我们常用的通过名字来进行查找,删除,修改都会用到。
java自学难点_学习JAVA遇到的难点总结相关推荐
- java io复用_学习Java编程-IO复用
原标题:学习Java编程-IO复用 对于服务器的并发处理能力,我们需要的是:每一毫秒服务器都能及时处理这一毫秒内收到的数百个不同TCP连接上的报文,与此同时,可能服务器上还有数以十万计的最近几秒没有收 ...
- java正则表达式 匹配()_学习Java正则表达式(匹配、替换、查找)
import java.util.ArrayList; import java.util.regex.Matcher; import java.util.regex.Pattern; public c ...
- java dos 菜单栏_学习java之电脑的常用快捷键和DOS窗口下的常用命令
学习java之电脑的常用快捷键和DOS窗口下的常用命令 电脑一些常用的快捷键 win快捷键: 单独按Windows:显示或隐藏 "开始"功能表 Windows+BREAK:显示&q ...
- java图形界面_学习Java有什么用?Java的应用领域有哪些?
很多人可能会问,学习Java有用吗?Java是世界第一编程语言!由于它开源.免费.跨平台,这些特性都让他富有生命力.国内最具有知名度三家IT企业BAT-(百度,阿里,腾讯)和其他众多企业,都在广泛使用 ...
- java大致了解_学习Java第一天,大致了解
第一章: java核心 1 了解 java的产生背景 2 了解java的体系结构和组成 3 了解java程序的编写 编译 运行 4 掌握java的 api文档的使用 5 了解 jdk的组成 1. ja ...
- java程序设计心得_学习Java编程的学习方法总结
现在越来越多的人学习Java,参加高强度的Java培训,希望毕业后高薪就业,但是学习Java并非是短期内就可以速成的,不可能一口气吃成一个大胖子,4-5个月就能吧全部的技能学完,这需要一个寻寻渐进的过 ...
- java开发思路_学习Java的思路
学习的思路 1.心里思路----任何事情都很简单 只是你暂时不懂得方法当你懂得了方法再复杂的问题都会变的非常简单因为任何一个复杂的问题都是由很多简单的问题组合成的.学习任何知识都是这样当你觉得它容易 ...
- 下载java哪个版本_学习JAVA应该下载ORACLE哪个版本
学习JAVA应该下载ORACLE哪个版本 关注:290 答案:2 mip版 解决时间 2021-02-04 00:44 提问者碎情漂移ド 2021-02-03 07:52 win32_11gR1_ ...
- 学java的困惑_学习Java - 关于一些代码困惑
我正在阅读一本关于Java的书,到目前为止我已经了解了它的大部分内容.不过,我碰到了一些我似乎无法弄清楚的代码.这来自一个简单的21点游戏: public class CardDeckTest { p ...
最新文章
- Android之如何获取网络类型并判断是否可用
- c语言指针大全,C语言指针
- 可落地微服务on k8s的持续集成/部署方案
- 微信被曝大“Bug”?有用户账户资金被盗刷,这个功能要慎用
- java mysql时间格式化字符串_java将日期时间字符串转成日期插入到oracle的date字段...
- 自动获取关键词插件,双标题关键词插件
- Linux定时器例子
- perl novel可变剪接识别(2)
- unbuntu20.04 安装mysql
- 学而不思则罔,思而不学则殆
- 【阅读笔记】Deep Mutual Learning
- Android/安卓 文本添加中划线、下划线的方法
- DOS命令篇(find 和 findstr)
- 租车小程序系统开发制作功能介绍
- Plugin with id 'com.novoda.bintray-release' not foun
- MySQL - 21查询分析器EXPLAIN
- 信创办公--基于WPS的Word最佳实践系列(快速自定义访问工具栏)——以添加“输出为PPTX”命令为例
- 计算机管理损坏的图像,win7系统提示损坏的图像的解决方法
- scanline_p8
- 学历是敲门砖也是枷锁
热门文章
- 阿里“去 IOE”十二年,弹性计算如何二次去 I 和 E?
- 3 万字 51 张图教你 CPU、内存、操作系统硬核知识!
- Python 数据分析实战,揭秘国内顶尖医院分布现状!
- 微信上线「行程查询」服务;钉钉 CEO 回应被打「一星」;Go 1.14 发布 | 极客头条...
- 腾讯 Angel 升级:加入图算法,支持十亿节点、千亿边规模!
- 中国区块链开发者的热血时代来临!
- 是什么让 Python 如此多才多艺?
- 快速用 Haskell 构建超级简单的 Web 技术栈!
- 10 月全国程序员工资统计,一半以上的职位 5 个月没招到人!
- 一套代码两端运行不靠谱?是时候放弃 C++ 跨 Android、iOS 端开发!