Java知识点:琐碎知识点(2)
49个关键字一览
|
abstract |
default |
if |
private |
this |
|
boolean |
do |
implements |
protected |
throw |
|
break |
double |
import |
public |
throws |
|
byte |
else |
instanceof |
return |
transient |
|
case |
extends |
int |
short |
try |
|
catch |
final |
interface |
static |
void |
|
char |
finally |
long |
strictfp |
volatile |
|
class |
float |
native |
super |
while |
|
const |
for |
new |
switch |
null |
|
continue |
goto |
package |
synchronized |
main函数
- main函数并不只有public static void main(String args[]),还可以是 final public static void main(String[]args) 或 public static void main(String...args)
- 不允许:public static void main(String[]...args).
- 如果类A没有main函数,当 “java A” 时,会抛:Exception NoSuchMethodError: main.
断言机制
语法:
- assert <boolean expression>;
- assert <boolean expression> : <str>; str是在抛出AssertionError时输出的描述信息。
- 断言默认是关闭的。
- 可以针对某个类、某个包、或全部类 使用断言或禁用断言。
准则:
- 如果 assert fails,则抛出AssertionError。
- 不要使用断言验证任何公共方法(包括main方法)的参数。
- 不要使用可能产生副作用的断言表达式。
- 断言的宗旨:加和不加断言对于程序没有任何影响,因为断言只用来验证。
- 对于断言可能抛出的AssertionError,不需要去特别处理这个Error。
- 如果用-source 1.3编译代码时assert用作标识符,则虽然编译成功,但会有警告。
静态变量
- 在一般方法内不能声明静态变量,因为静态变量要求在类加载时就分配空间。
异常层次

异常准则:
- 编译器禁止永远不可达的catch子句,否则会编译错误:XXX has already been caught。
public class Exception02
{
public static void main(String[] args) {
try {
int x = 0;
int y = 5 / x;
} catch (Exception e) {
System.out.println("Exception");
} catch (ArithmeticException ae) { //Compile Error: 因为永远不可达
System.out.println("Arithmetic Exception");
}
System.out.println("finished");
}
}
类声明的访问级别
- 声明一般类时,只能使用public或default访问级别,因为其他两个访问修饰符对一般类没有意义。
包装类的equals方法实现
这里用Integer举例子:
public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}
因此不管怎么调用equals方法,都不会抛异常。
如果a是Integer类型的,执行a.equals(b),只要b不是Integer类型的,都会返回false。
包装器类的构造函数
存在参数为String的构造函数,这里以Boolean为例。
- new Boolean(String str);
死循环编译错误
下面的代码会编译错误:
while(true)
{
}
int a = 1; //Compile Error:不可达的语句
但是下面的代码不会编译错误:
while(true)
{
}
内部类注意点
一般内部类中不允许定义任何静态成员。
数组的声明方法
- int[]arr = new int[]{1,2,3}; //YES
- int[]arr = new int[3]{1,2,3}; //NO
Math类
- Math.sqrt(double a)
- 如果a是NaN或者小于0,则返回NaN。
- 如果a是正无穷大,则返回正无穷大。
- 如果a是正0或负0,则返回与参数相同。
- Math.cos(double a)
- a是用弧度表示的角。
- Math.toRadians(double a):角度->弧度
- Math.toDegrees(double a):弧度->角度
位运算问题
- 正数的无符号右移并不一定还是正数。
对于 c = a >>> b,即使 a>0,b>1,有可能使得 c<0的,比如:
int a = 1;
int b = Integer.MAX_VALUE + 1;
int c = a >>> b; // c=-1
文件I/O问题
如果要设置输出的编码,只能使用 OutputStreamWriter,因为它能够通过如下构造函数设置输出编码:
- new OutputStreamWriter(OutputStream out, String charSet);
FileOutputStream存在 FileOutputStream(File file,boolean append); 第二个参数如果为true,表示将写入的内容放入文件末尾。
带标签的break和continue
- 标签一定要直接位于while或for语句之前,否则Compile Error。
静态代码块异常
- 如果在静态初始化程序时(比如静态代码块)发生异常,则统一抛出:ExceptionInInitializerError。
public class InitializationBlock02
{
static
{
int a = 1/0; //抛ExceptionInInitializerError,
}
public static void main(String args[])
{ }
}
外部类声明注意点
- static不能用于修饰外部类。
重写的注意点
- 重写方法不能抛出更广的检验异常。
- 编译器没有判断多态性的能力,如果有类A和类B,且B extends A,如果A a = new B(); a.fun(),则编译器认为你在调用A的fun方法,因此如果A的fun方法抛出检验异常,则你需要捕获,不然会Compile Error。
public class Overridding02
{
public static void main(String[] args) {
A b = new B(); //Compile Error: 未报告的异常 java.lang.Exception
b.fun();
}
}
class A
{
public void fun() throws Exception
{
}
}
class B extends A{
public void fun()
{
}
}
Java知识点:琐碎知识点(2)的更多相关文章
- Java入门学习知识点汇总
Java入门重要知识点在这里总结一下,以方便日后复习,这部分内容主要有:变量和常量,常用的运算符,流程控制语句,数组,方法这些内容 一.变量和常量 1.Java关键字 先贴张图: 所有关键字区分大小写 ...
- Java编程学习知识点分享 入门必看
Java编程学习知识点分享 入门必看 阿尔法颜色组成(alpha color component):颜色组成用来描述颜色的透明度或不透明度.阿尔法组成越高,颜色越不透明. API:应用编程接口.针对软 ...
- Java研发工程师知识点总结
Java研发工程师知识点总结 最近一次更新2017年12月08日 大纲 一.Java基础(语言.集合框架.OOP.设计模式等) 二.Java高级(JavaEE.框架.服务器.工具等) 三.多线程和并发 ...
- 牛客网Java刷题知识点之为什么HashMap和HashSet区别
不多说,直接上干货! HashMap 和 HashSet的区别是Java面试中最常被问到的问题.如果没有涉及到Collection框架以及多线程的面试,可以说是不完整.而Collection框架的 ...
- 牛客网Java刷题知识点之为什么HashMap不支持线程的同步,不是线程安全的?如何实现HashMap的同步?
不多说,直接上干货! 这篇我是从整体出发去写的. 牛客网Java刷题知识点之Java 集合框架的构成.集合框架中的迭代器Iterator.集合框架中的集合接口Collection(List和Set). ...
- 牛客网Java刷题知识点之Map的两种取值方式keySet和entrySet、HashMap 、Hashtable、TreeMap、LinkedHashMap、ConcurrentHashMap 、WeakHashMap
不多说,直接上干货! 这篇我是从整体出发去写的. 牛客网Java刷题知识点之Java 集合框架的构成.集合框架中的迭代器Iterator.集合框架中的集合接口Collection(List和Set). ...
- 牛客网Java刷题知识点之ArrayList 、LinkedList 、Vector 的底层实现和区别
不多说,直接上干货! 这篇我是从整体出发去写的. 牛客网Java刷题知识点之Java 集合框架的构成.集合框架中的迭代器Iterator.集合框架中的集合接口Collection(List和Set). ...
- 牛客网Java刷题知识点之垃圾回收算法过程、哪些内存需要回收、被标记需要清除对象的自我救赎、对象将根据存活的时间被分为:年轻代、年老代(Old Generation)、永久代、垃圾回收器的分类
不多说,直接上干货! 首先,大家要搞清楚,java里的内存是怎么分配的.详细见 牛客网Java刷题知识点之内存的划分(寄存器.本地方法区.方法区.栈内存和堆内存) 哪些内存需要回收 其实,一般是对堆内 ...
- 牛客网Java刷题知识点之HashMap的实现原理、HashMap的存储结构、HashMap在JDK1.6、JDK1.7、JDK1.8之间的差异以及带来的性能影响
不多说,直接上干货! 福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号: 大数据躺过的坑 Java从入门到架构师 人工智能躺过的坑 ...
- 牛客网Java刷题知识点之UDP协议是否支持HTTP和HTTPS协议?为什么?TCP协议支持吗?
不多说,直接上干货! 福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号: 大数据躺过的坑 Java从入门到架构师 人工智能躺过的坑 ...
随机推荐
- 1067: [SCOI2007]降雨量 - BZOJ
Description 我们常常会说这样的话:“X年是自Y年以来降雨量最多的”.它的含义是X年的降雨量不超过Y年,且对于任意Y<Z<X,Z年的降雨量严格小于X年.例如2002,2003,2 ...
- NET Framework 4 中的新 C# 功能
http://msdn.microsoft.com/zh-cn/magazine/ff796223.aspx C# 编程语言自 2002 年初次发布以来已经有了极大的改善,可以帮助程序员编写更清晰易懂 ...
- D&F学数据结构系列——插入排序
插入排序(insertion sort) 插入排序由P-1趟(pass)排序组成.对于P=1趟到P=N-1趟,插入排序保证从位置0到位置P-1上的元素为已排序状态.插入排序利用了这样的事实:位置0到位 ...
- hdu 1133 Buy the Ticket
首先,记50的为0,100的为1. 当m=4,n=3时,其中的非法序列有0110010; 从不合法的1后面开始,0->1,1->0,得到序列式0111101 也就是说,非法序列变为了n-1 ...
- 无法解析指定的连接标识符 oracle错误12154
导出的时候老是报这个错,exp userid=c##yh/yh@MyOracle tables=(stu3) file=d:\e.dmp; 解决了好久,最后都失败了,后来加了127.0.0.1:152 ...
- iOS开发--数组
1.sortedArrayUsingSelector (按Key值大小对NSDictionary排序) NSMutableArray *array = [NSMutableArray arrayWit ...
- 创业草堂之一:创业的Idea是怎样产生的?
“创业”,在很多人的想象中,就是两个小伙子在车库里.或者在学生寝室里,侃出了一个Idea,然后找到了一个投资人或VC,经过几句话讲解,VC拍手叫绝,10钟内当场拍板,砸下了2000万美金,然后两小伙子 ...
- C语言指针的概念
在计算机中,所有的数据都是存放在存储器中的.一般把存储器中的一个字节称为一个内存单元,不同的数据类型所占用的内存单元数不等,如整型量占2个单元,字符量占1个单元等,在前面已有详细的介绍.为了正确地访问 ...
- [iOS]如何给Label或者TextView赋HTML数据
// // ViewController.m // text // // Created by 李东旭 on 16/1/22. // Copyright © 2016年 李东旭. All rights ...
- 【Android多屏适配】动态改变Listview item高度
在ListView的Adapter中去直接获取传入View的LayoutParams是会报空指针异常的,唯一的方法是在xml中嵌套布局一层LinearLayout <?xml version=& ...