java基础技巧_java基础中的技巧
eclipse软件操作
1.1.在一个项目里,一般将源代码放到src目录下。
1.2.不知道某个类所在的包?把鼠标指针放到该类名下,系统会提示import这个类所在的包。
1.3.自动生成get,set方法?选中变量后,右键,source/generate setters and getters。
1.4.Ctrl+左键,直接进入方法的实现。
注释
1.1.java中两种注释/* */和/** */有什么关系?
/* */只代表单纯的注释 。
/** */ 不仅有注释的功效而且你鼠标放在你注释的方法上面他会把你注释的内容显示出来,还能生成标准的api注解。如何生成api注解,需要进一步学习。。。
控制流
1.1.在判断语句里,不能用0代表false;非0代表true。
1.2.for,switch大括号一般不新起一行。例如:
1 switch(score) {2 case "A":3 print(4, "(80,100)");4 break;5 case "B":6 print(5, "(60,80)");7 break;8 }
View Code
1.3.简化版顺序for循环:
例如:
1 String s = "fdsfds";2 for (charc : s.toCharArray()) {3 print(1, c);4 }
View Code
类
1.1.写main函数的技巧?
因为文件名必须与public类名相同,因此可以将类名和文件名改为Main,这样在项目里面比较好找这个main文件。
1.2.静态函数的调用要求?
静态函数是属于类的方法,不是对象的方法。因此静态函数只能调用静态函数。
因此,由于main函数是静态的,则main函数只能调用其他static静态函数了。
1.2.1.为何main是静态函数?
1.3.object类对象的使用技巧?
因为object类是任何类的超类。因此,可以将任意类型的值赋给object对象,需要时,再强制转换过来。
例如:
1 public static void print(intindex, Object obj)2 {3 System.out.println(String.format("{%d}, %s",index, obj.toString()));4 }
View Code
这样,任意类型的变量传给obj对象时,通过Object.toString函数可以将object类型转为String类型。
1.4.尝试某些语法的技巧?
以前,我总喜欢在main函数中写一些语法的代码。但是这样会导致冗余,其实有更好的办法。那就是在另外一个函数里面测试语法,封装成函数后,给main函数调用,这样main函数就会很简洁了。
例如:
1 public static voidtestDemo()2 {3 print(1,2);4 print(2,'c');5 print(3,"fdsf");6 print(4,2.3);7 }
View Code
这样,直接在main中调用testDemo就可以完成测试,非常简洁。
1.5.String类是用的最多的。
常量池,栈,堆,详解传送门
注意:常量区的内容只有一份,在编译时确定,例如:“hello"和"he"+"llo"在常量区中,在编译时确定,只有一份。
String类使用技巧传送门
三个String类使用技巧传送门2
总结:==号比较的是引用中存储的地址。若一个在常量区,一个在堆区,肯定不相等。
equals比较的是引用所指的内容。只要内容相同,无所谓数据在哪个地方。
1.6.抽象类与接口。
1.6.1.概念解释传送门
1.6.2.接口与多态传送门
a)若一个普通类实现了接口,那么,该普通类必须实现接口中所有的抽象方法。
b)若一个抽象类实现了接口,那么,该抽象类可以实现接口中的抽象方法,也可以不实现。
c)若一个普通的子类继承了抽象父类,该抽象的父类又实现了接口。那么,该普通的子类必须得重写,抽象父类中所有的抽象方法,并且,还必须得实现抽象的父类尚未实现的抽象方法。
1.6.3.implements 和 extends的区别?
implements表示执行,需要具体实现。
extends表示扩展,跟继承实现一致。
1.7.随机数类
一般用到随机的场景为两个:random类和shuffle函数
1.7.1.random类
1.7.1.1.种子,产生的随机序列一致。因为有固定的公式。
1 //种子为1,每次产生地随机数在100以内。
2 public static voiddemoRandom() {3 Random rand = new Random(1);4 for (int i = 0; i < 101; ++i)5 print(i, rand.nextInt(100));6 }
View Code
总结:加入固定种子以后,每次运行程序的结果一样。
1 public static voiddemoRandom() {2 Random rand = newRandom();3 for (int i = 0; i < 101; ++i)4 print(i, rand.nextInt(100));5 }
View Code
总结:加入随机种子以后,每次运行程序结果不一致。
1.7.1.2.技巧:每次存种子,就可以找到种子产生的序列,减少存储。
1.7.2.shuffle
功能:打乱序列的排序。
例如:
1 List array = Arrays.asList(new Integer[] {1, 2, 3});2 print(1, array);3 for (int i = 0; i < 9; ++i) {4 Collections.shuffle(array);5 print(2, array);6 }
View Code
1.8.时间Date类
1.8.1使用DateFormat类自定义格式
1 public static voiddemoDate() {2 Date date = newDate();3 print(1, date);4 print(2, date.getTime());5 DateFormat df = new SimpleDateFormat("HH:mm:ss yyy/MM/dd");6 print(3, df.format(date));7 }
View Code
1.8.2.使用系统显示时间的格式
1 print(4, DateFormat.getTimeInstance(DateFormat.FULL).format(date));
View Code
1.9.UUID
1.9.1.随机产生32位的字符。
1 UUID.randomUUID()
View Code
2.0.Math类也挺常用
数据结构
数据结构基本分为:list列表,set集合,map键值对。
它们都是接口,以不同的逻辑方法实现,就变成了不同的类。例如,ArrayList类,HashMap类等等。
1.1.list
1.1.1.list里面可以放重复的元素。
1.1.2.在使用list列表时,可能要重写list排序算法,要使用匿名内部类。
基本概念传送门
代码例子:
1 Collections.sort(strList, new Comparator() {2 @Override3 public intcompare(String o1, String o2)4 {5 returno2.compareTo(o1);6 }7 });
View Code
总结:由于comparator是接口,因此new的时候要实现,也就是重写。
1.1.3.经常也会用数组
1 int[] intArray = new int[] {1,2,3};
View Code
1.2.set
1.2.1.set元素不会重复。
1.3.map
1.3.1.去重。
1.3.2.快速查找。
异常
1.1.1不知道一部分代码有没有问题,可以把这些代码放在try块里,若抛出异常,用catch接住,finally进行善后工作,例如关闭文件,关闭流。
1.1.2.异常代码可以有两种形式。函数throw到外部或者函数内部触发。
1.1.2.1:函数内部触发异常。
1 public static voiddemoException() {2 try{3 int a = 1;4 String b = null;5 //b.indexOf("2");
6 a = 1 / 0;7 }8 catch(NullPointerException npe) {9 print(1, "npe");10 }11 catch(Exception e) {12 print(2, "e");13 }14 finally{15 print(3, "done");16 }17 }
View Code
总结:内部逻辑,内部解决。
1.1.2.2:函数throw到外部触发异常。
1 //即将被测试异常地代码
2 public static void demoException() throwsException {3 int a = 1;4 String b = null;5 //b.indexOf("2");
6 a = 1 / 0;7 }
View Code
1 public static voidmain(String args[])2 {3 try{4 demoException();5 }6 catch(NullPointerException npe) {7 print(1, "npe");8 }9 catch(Exception e) {10 print(2, "e");11 }12 finally{13 print(3, "done");14 }15 }
View Code
总结:在函数中专注于写代码,外部处理exception。
包
包在java中类似于c++命名空间。
1.1.如何建立多层包?
注意:
每个包目录下面的文件,开头的格式都是package bag1.bag2.xxx.xxx...; 表示这个文件在哪个包(目录)里面。不能随意修改和删除这个语句,要不然产生不匹配的错误。
在一个包(目录)下新建一个文件夹,那么这个文件夹就会变成子包。
java基础技巧_java基础中的技巧相关推荐
- java 绘制长方形_Java基础之在窗口中绘图——绘制直线和矩形(Sketcher 2 drawing lines and rectangles)...
控制台程序. import javax.swing.JComponent; import java.util.*; import java.awt.*; import java.awt.geom.*; ...
- java list 差集_Java基础之集合框架
Java 集合框架概述 一方面, 面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对对象进行存储.另一方面,使用Array存储对象方面具有一些弊端,而Java 集合就像一种容器 ...
- java图形接口_java基础七 [图形用户接口](阅读Head First Java记录)
到目前为止我们接触的都是Java的命令行,但是为了让用户使用,必须有图形化界面,所以这章主要讲的是怎么使用GUI(图形用户接口) 创建一个GUI:javax.swing.* 本章讲的布局相关内容都是j ...
- 黑马程序员_毕向东_Java基础视频教程_Java基础学习知识点总结
黑马程序员_毕向东_Java基础视频教程 Java基础学习知识点总结 2016年01月06日 day01 一.基础知识:软件开发 1.什么是软件?软件:一系列按照特定顺序组织的计算机数据和指令的集合 ...
- java 数组成员_java 数组中含有
<数据结构与抽象:Java语言描述(原书第4版)>一2.2.1 可变大小数组 本节书摘来华章计算机<数据结构与抽象:Java语言描述(原书第4版)>一书中的第2章 ,第2.2. ...
- java的成员方法_java编程中的成员方法是什么?
DIEA 成员方法描述对象所具有的功能或操作,反映对象的行为,是具有某种相对独立功能的程序模块.它与过去所说的子程序.函数等概念相当.一个类或对象可以有多个成员方法,对象通过执行它的成员方法对传来的消 ...
- java runnable 异常_JAVA 线程中的异常捕获
在java多线程程序中,所有线程都不允许抛出未捕获的checked exception(比如sleep时的InterruptedException),也就是说各个线程需要自己把自己的checked e ...
- java swing背景_java Swing中添加背景图片(总结)
在java GUI图形化设计中,Swing组件添加背景图片主要有两中情况:1,在Jpanl面板中添加背景图片,2,在jLable中添加背景图片 首先介绍一种最巧妙的背景图片添加方法, 1.利用JLab ...
- java 参数返回_Java基础---Java中带参数返回值方法的使用(四十)
Java 中带参带返回值方法的使用 如果方法既包含参数,又带有返回值,我们称为带参带返回值的方法. 例如:下面的代码,定义了一个 show 方法,带有一个参数 name ,方法执行后返回一个 Stri ...
- java中立方根方法_java基础:4、java中Math类的常用方法?
4.java中Math类的常用方法? Java的Math类封装了很多与数学有关的属性和方法.如下所示: System.out.println("计算平方根--Math.sqrt(81)-- ...
最新文章
- 理解RESTful架构【转】
- 《孙鑫老师谈如何学好编程》摘要
- 西京学院计算机科学与技术专业怎么样,西京学院有哪些专业及什么专业好
- iOS 定位功能的实现
- USTC 2011 homework list [现代软件工程 作业]
- zhilizhili-ui 2016始动 开始做个样例站吧 (一)
- 如何取到两个日期中的每一天,并且打印出来
- VMware下虚拟系统上网与互ping
- netmeeting的使用方法
- android工程师专业技能,android开发工程师简历中的专业技能怎么写
- html怎么设置视频为背景图片,如何给视频加上背景图片
- iPhone/苹果手机不用数据线传输文件到电脑的方法/步骤
- 独木舟上的旅行(贪心算法)
- CUDA kernel errors might be asynchronously reported at some other API call,so the stacktrace below m
- codewars练习(javascript)-2021/1/25
- CF1265E Beautiful Mirrors
- java web 酒店管理系统_GitHub - inkss/hotelbook-JavaWeb: 酒店管理系统-JavaWeb期末项目。...
- mysql忘记密码(无秘登录)for Linux
- eWebEditor编辑器asp.net版
- 嵌入式软件工程师必须了解的八大加密算法
热门文章
- VTD(Virtual Test Drive)
- Dubbo视频教程《基于Dubbo的分布式系统架构视频教程》--课程列表
- gdiplus画直线
- WhatsApp聊天即时翻译 自动翻译 双向翻译 一键翻译 多开管理
- Windows/Mac系统MySQL,MySQL驱动下载和安装
- 基于Java、Jsp实现购物车的功能
- 在国企的日子(第三章上部 出差)
- mysql数据库总结_MySQL数据库优化-总结
- 万嘉MOV格式转换器v1.00.102官方免费版
- JS纯前端导出PDF及分页和使用window.print()保存PDF