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从入门到架构师 人工智能躺过的坑 ...
随机推荐
- 1231: [Usaco2008 Nov]mixup2 混乱的奶牛 - BZOJ
Description 混乱的奶牛 [Don Piele, 2007] Farmer John的N(4 <= N <= 16)头奶牛中的每一头都有一个唯一的编号S_i (1 <= S ...
- Codeforces Round #238 (Div. 2) D. Toy Sum 暴搜
题目链接: 题目 D. Toy Sum time limit per test:1 second memory limit per test:256 megabytes 问题描述 Little Chr ...
- MyEclipse 2015 Stable 1.0下载安装破解日志
前言 这2天下载了许多myeclipse版本,基本上是14/15版本的,各种破解均告以失败,这次下载了贴吧一个吧友提供的版本,现已破解.破解结果现不好说--目前已装SVN,根据经验,只有等待一定时间验 ...
- 如果使用得当,MySQL 也可以化身 NoSQL
[编者按]随着互联网和移动互联网的发展,各个机构都需要支撑远超过以往的数据.而在这个需求的刺激下,IT 领域出现了大量数据处理技术,其中之一就是 NoSQL .灵活的数据类型,高效的处理能力,让 No ...
- HDU 4509 湫湫系列故事——减肥记II(暴力模拟即可)
看了题目后,没自己做,直接看别人题解了,这里转一下. 看了之后,突然想起scanf还可以按照自己写的格式输入数据啊,差点连这个都忘记了啊. 注意输入中时间可能有重复的. http://www.cnbl ...
- Javascrip操作json方法
var str1 = '{ "name": "cxh", "sex": "man" }'; var data=eval( ...
- .net中的认证(authentication)与授权(authorization)
“认证”与“授权”是几乎所有系统中都会涉及的概念,通俗点讲: 1.认证(authentication) 就是 "判断用户有没有登录?",好比windows系统,没登录就无法使用(不 ...
- hdu 3758 Factorial Simplification
这题主要是质因数分解!! 求出每个因子的幂,如果有负数,则输出-1: 如果2的幂数为0,这输出0: 最后就是开始凑阶乘了…… #include<iostream> #include< ...
- Intellij 导入play framework 项目
新建一个项目 play new helloworld IshallbeThatIshallbe:~ iamthat$ mkdir temp IshallbeThatIshallbe:~ iamthat ...
- Project Euler 77:Prime summations
原题: Prime summations It is possible to write ten as the sum of primes in exactly five different ways ...