Java基本介绍

SUN:Stanford University Network
Java之父:James Gosling
Java的跨平台性因为有Java虚拟机,运行class文件。
Java吉祥物:Duke
JDK是用来开发的(编译Java程序),而如果只运行Java程序,则只需要JRE即可。
而JDK也是用Java写的,因此如果要编译Java程序,也要JRE,因此在JDK目录中也会有一个JRE目录。
第三方的JAR包(dom4j.jar)都是由class文件组成的,Eclipse的“add to build path”就是将jar包加入环境变量classpath中。

标识符命名规范

关键字必须是小写

  1. 不能用Java的关键字作为标识符名称。
  2. 以“字母、$、下划线”作为开始。
  3. 允许“字母、$、下划线、数字”。

花括号的对齐方式

void fun()        //建议使用                                                     void fun(){    //不建议使用
{                              

}                             }

类、接口、方法、变量命名规范

  • 类: 名词,比如 Apple
  • 接口:形容词,比如Serializable(可序列化)
  • 方法:动词+名词,比如 doCalculation()
  • 变量:名词

JavaBeans 命名规范

  • JavaBeans是一个带有属性的Java类。
  • 如果属性是Boolean类型,则getter方法可以是isXxx()或getXxx(); 如果属性是非Boolean类型,则getter方法可以是getXxx()。
  • setter方法的命名是:setXxx()。
  • 对于监听器方法,命名规范为:addXxxListener() 和 removeXxxListener()。

Strictfp

  • strictfp: strict floating-point calculation(严格浮点运算)
  • 介绍:strictfp 是 Java 的关键字(keyword),自从 Java 1.2 以来被引入,使得浮点运算遵循 IEEE 754 标准。
  • 目的:portable(可移植性)。
  • 需求:在每个平台(机器)上(32位、64位)的浮点运算精度相同,比如,使用 strictfp 规定浮点运算的精度是32位,而在64位的机器上浮点运算可以精确到64位,但是使用strictfp后,就算在64位的机器上运行程序,浮点运算精度仍为32位。
  1. public class Strictfp
  2. {
  3. public static void main(String args[])
  4. {
  5. A a = new A();
  6. System.out.println(a.subtract1(2.00,1.10));
  7. System.out.println(a.subtract2(2.00,1.10));
  8. }
  9. }
  10.  
  11. class A
  12. {
  13. public double subtract1(double left,double right)
  14. {
  15. return left - right;
  16. }
  17. public strictfp double subtract2(double left,double right)
  18. {
  19. return left - right;
  20. }
  21. }

局部变量

  • 声明局部变量时建议要初始化,虽然不初始化本身不会编译错误,但是你使用了未初始化的变量时会Compile Error。
  1. int a;
  2. System.out.println(a); //Compile Error:"可能尚未初始化变量 a"

a+=b 与 a=a+b的区别

 (假设a的类型是A,b的类型是B)

  • a+=b  等价于  a=(A)(a+b)

异常分类

  • RuntimeException:不用捕获或声明抛出的异常,如NullPointerException。
  • 检验异常:需要捕获或声明抛出的异常。
  • Error:机器内部错误。

进制转换

  1. public class Wrapper01
  2. {
  3. public static void main(String[] args) {
  4. System.out.println(Integer.parseInt("111100",2)); //二进制 -> 十进制
  5. System.out.println(Integer.toHexString(Integer.parseInt("111100",2))); //二进制 -> 十六进制
  6. System.out.println(Integer.toOctalString(Integer.parseInt("111100",2))); //二进制 -> 八进制
  7.  
  8. System.out.println(Integer.parseInt("74",8)); //八进制 -> 十进制
  9. System.out.println(Integer.toBinaryString(Integer.parseInt("74",8))); //八进制 -> 二进制
  10. System.out.println(Integer.toHexString(Integer.parseInt("74",8))); //八进制 -> 十六进制
  11.  
  12. System.out.println(Integer.toHexString(60)); //十进制 -> 十六进制
  13. System.out.println(Integer.toOctalString(60)); //十进制 -> 八进制
  14. System.out.println(Integer.toBinaryString(60)); //十进制 -> 二进制
  15.  
  16. System.out.println(Integer.toBinaryString(Integer.parseInt("3C",16))); //十六进制 -> 二进制
  17. System.out.println(Integer.toBinaryString(Integer.parseInt("3C",16))); //十六进制 -> 二进制
  18. System.out.println(Integer.parseInt("3C",16)); //十六进制 -> 十进制
  19. }
  20. }

不用第三方变量交换整数

  1. a = a ^ b;
  2. b = a ^ b; //(a^b)^b=a ,现在b=a
  3. a = a ^ b; //(a^b)^a = b,现在a=b

临时环境变量设置

  • set PATH    //显示PATH
  • set PATH=XXXXX   //设置PATH

方法重写

  假设原方法为A,重写的方法为B

  • 方法B的返回类型可以是方法A的返回类型的子类型。
  • 方法B不能抛出比方法A更多的异常。
  • 方法B的访问控制不能比方法A的更限制。

重写与重载的区别

  重载 重写
参数 必须改变 一定不能改变
返回类型 可以改变 一般不改变
异常 可以改变 只能抛更小的异常
访问级别 可以改变 一定更广
调用 编译时决定调用哪个重载版本 运行时决定调用哪个重写方法
  1. public class Polymorphism02
  2. {
  3. public static void fun(Student student)
  4. {
  5. System.out.println("调用了以Student为参数的函数");
  6. student.print();
  7. }
  8. public static void fun(Person person)
  9. {
  10. System.out.println("调用了以Person为参数的函数");
  11. person.print();
  12. }
  13. public static void main(String[] args) {
  14. Person person = new Student();
  15. fun(person); //调用了fun(Person person),但是因为多态性,所以函数中的person.print()调用了Student的print方法
  16. }
  17. }
  18.  
  19. class Person
  20. {
  21. public void print()
  22. {
  23. System.out.println("Person");
  24. }
  25. }
  26. class Student extends Person
  27. {
  28. public void print()
  29. {
  30. System.out.println("Student");
  31. }
  32. }

初始化块

  • 静态代码块:加载类时被执行,即使创建了多个类对象,但是只在第一次创建前执行静态代码块。
  • 一般初始块:调用构造函数的super语句(第一句)后执行。
  1. public class InitializationBlock01
  2. {
  3. public static void main(String[] args) {
  4. //output: a b z c d e f c d e f
  5. System.out.println("z");
  6. B b = new B();
  7. B c = new B();
  8. }
  9. }
  10. class A
  11. {
  12. {
  13. System.out.print("c ");
  14. }
  15. public A()
  16. {
  17. System.out.print("d ");
  18. }
  19. }
  20. class B extends A
  21. {
  22. static
  23. {
  24. System.out.print("a ");
  25. }
  26. public B()
  27. {
  28. System.out.print("f ");
  29. }
  30. {
  31. System.out.print("e ");
  32. }
  33. static
  34. {
  35. System.out.print("b ");
  36. }
  37. }

位运算

  • a >> b :a是int,则有32位,这个运算是将a有符号右移(b%32)位;a是long,则有64位,这个运算是将a有符号右移(b%64)位.
  • a >>> b: a是int,则有32位,这个运算是将a无符号右移(b%32)位;a是long,则有64位,这个运算是将a无符号右移(b%64)位.
  • a << b : a是int,则有32位,这个运算是将a左移(b%32)位;a是long,则有64位,这个运算是将a左移(b%64)位.

Java知识点:琐碎知识点(1)的更多相关文章

  1. Java入门学习知识点汇总

    Java入门重要知识点在这里总结一下,以方便日后复习,这部分内容主要有:变量和常量,常用的运算符,流程控制语句,数组,方法这些内容 一.变量和常量 1.Java关键字 先贴张图: 所有关键字区分大小写 ...

  2. Java编程学习知识点分享 入门必看

    Java编程学习知识点分享 入门必看 阿尔法颜色组成(alpha color component):颜色组成用来描述颜色的透明度或不透明度.阿尔法组成越高,颜色越不透明. API:应用编程接口.针对软 ...

  3. Java研发工程师知识点总结

    Java研发工程师知识点总结 最近一次更新2017年12月08日 大纲 一.Java基础(语言.集合框架.OOP.设计模式等) 二.Java高级(JavaEE.框架.服务器.工具等) 三.多线程和并发 ...

  4. 牛客网Java刷题知识点之为什么HashMap和HashSet区别

    不多说,直接上干货! HashMap  和  HashSet的区别是Java面试中最常被问到的问题.如果没有涉及到Collection框架以及多线程的面试,可以说是不完整.而Collection框架的 ...

  5. 牛客网Java刷题知识点之为什么HashMap不支持线程的同步,不是线程安全的?如何实现HashMap的同步?

    不多说,直接上干货! 这篇我是从整体出发去写的. 牛客网Java刷题知识点之Java 集合框架的构成.集合框架中的迭代器Iterator.集合框架中的集合接口Collection(List和Set). ...

  6. 牛客网Java刷题知识点之Map的两种取值方式keySet和entrySet、HashMap 、Hashtable、TreeMap、LinkedHashMap、ConcurrentHashMap 、WeakHashMap

    不多说,直接上干货! 这篇我是从整体出发去写的. 牛客网Java刷题知识点之Java 集合框架的构成.集合框架中的迭代器Iterator.集合框架中的集合接口Collection(List和Set). ...

  7. 牛客网Java刷题知识点之ArrayList 、LinkedList 、Vector 的底层实现和区别

    不多说,直接上干货! 这篇我是从整体出发去写的. 牛客网Java刷题知识点之Java 集合框架的构成.集合框架中的迭代器Iterator.集合框架中的集合接口Collection(List和Set). ...

  8. 牛客网Java刷题知识点之垃圾回收算法过程、哪些内存需要回收、被标记需要清除对象的自我救赎、对象将根据存活的时间被分为:年轻代、年老代(Old Generation)、永久代、垃圾回收器的分类

    不多说,直接上干货! 首先,大家要搞清楚,java里的内存是怎么分配的.详细见 牛客网Java刷题知识点之内存的划分(寄存器.本地方法区.方法区.栈内存和堆内存) 哪些内存需要回收 其实,一般是对堆内 ...

  9. 牛客网Java刷题知识点之HashMap的实现原理、HashMap的存储结构、HashMap在JDK1.6、JDK1.7、JDK1.8之间的差异以及带来的性能影响

    不多说,直接上干货! 福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号:   大数据躺过的坑      Java从入门到架构师      人工智能躺过的坑          ...

  10. 牛客网Java刷题知识点之UDP协议是否支持HTTP和HTTPS协议?为什么?TCP协议支持吗?

    不多说,直接上干货! 福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号:   大数据躺过的坑      Java从入门到架构师      人工智能躺过的坑          ...

随机推荐

  1. C#: Create a WebRequest with HTTP Basic Authentication

    http://blog.csdn.net/huangyaoshifog/article/details/4470675 myReq = WebRequest.Create(url); string u ...

  2. JsRender系列demo(2)多模板-template

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  3. 空格的URL编码

    Q: 为什么我看的教材一会说是“+” 一会说是“%20” A: urlencode(" ") '返回+encodeURI(" ") '返回%20是有区别的

  4. @JsonFormat时间不对

    实际时间为:2015-07-06 20:20:23 1. @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")    private Date ...

  5. BZOJ 3720 gty的妹子树

    块状树裸题 块状树: 首先对树进行分块,分出的每一块都是一个连通块 通常的分块的方式如下: 1.父亲所在块不满,分到父亲所在块中 2.父亲所在块满,自己单独开一个块 (貌似有更为优越的分块方式? 注意 ...

  6. *[codility]MissingInteger

    今天开始刷刷codility上respectable的题目,难度适中. https://codility.com/demo/take-sample-test/missing_integer 本题是找出 ...

  7. React gulp、Browserify、Webpack实例

    一.gulp var gulp = require('gulp'); var react = require('gulp-react'); gulp.task('jsx', function() { ...

  8. AspectJ 出现错误::0 can't find referenced pointcut 的解决之道

    使用AspectJ注解开发AOP应用时,会遇到以下问题: ::0 can't find referenced pointcut 这个问题,与你所在的开发环境有关,如下表 jdk version spr ...

  9. Java API —— JDK5新特性

    JDK5新特性         自动拆装箱.泛型.增强for.静态导入.可变参数.枚举   1.增强for概述         1)简化数组和Collection集合的遍历         2)格式: ...

  10. 《数据通信与网络》笔记--TCP中的拥塞控制

    1.拥塞窗口 发送方窗口的大小不仅取决于接收方,而.而且还取决于网络拥塞的情况. 发送方有2种信息:接收方通告的窗口大小和拥塞窗口的大小,实际的窗口大小事这两者中的最小者. 实际窗口大小 = min( ...