JavaSE 基础总结

  1. 浮点数之间不能相互比较,他们存在误差!
  2. 低 (byte、short、char) -> (int) -> (long) -> (float) -> (double) 高,从低到高的类型转换是自动。从高到低的要强制转换,如:type a = (type)b;注意:不能对布尔型的数据进行转换,不能把对象类型的转换为不相关的类型;高容量到低容量转换使用强制转换,注意存在精度问题。
  3. 在定义数值型变量的时候可以使用下划线来提高阅读性。long d = 9_223_372_036_854_775_807L;
  4. 常量是一种特殊的变量,其数值被设置后不能改变“final 常量名=值;”如 final double PI = 3.14;
  5. 变量命名原则:1 所有变量、方法、类名:见名知意;2 类成员变量:首字母小写的驼峰原则(monthSalary);3 局部变量:首字母小写的驼峰原则;4 常量大写字母和下划线(MAX_VALUE);5 类名:首字母大写的驼峰原则;6 方法名:首字母小写的驼峰原则。
  6. 注意短路与:&&具有短路的效果。左边是 false,右边就不执。同理短路或:|| 具有短路的效果,左边为 true,右边不执行。
  7. 三元运算: x ? y : z   表示x为TRUE时被赋值为y,否则被赋值为z。
  8. 运算优先符使用括号()。
  9. 包机制:一般用公司的域名倒置作为包名如com.xxxx。导入包使用import xxxx,import必须在package的下方。
  10. JavaDoc:@author作者名;@version版本号;@since指明最早使用的jdk版本号;@param参数名;@return返回值情况;@throws异常抛出情况。
  11. 使用IO流一定要记得关闭,否则会占用资源。
  12. 顺序结构:从上到下一次执行。有若干个一次执行的处理步骤,它是任何一个算法都离不开的基本结构。
  13. 选择结构:if单选、if双选、if多选、嵌套if、swich选择。
  14. Swich里面记得加break;不然会出现case穿透!JDK7以后swich里面可以支持String判断了。
  15. do-whle会先执行一次do里面的代码,然后执行while判断。与while不同的是while是先判断条件,而do-while是先执行do然后判断条件。
  16. for循环使用idea可以输入  100.for  来快速写for语句。for语句是最有效、最灵活的循环结构。for循最先执行初始化结构,也可以是空语句;然后检测布尔表达式,如果为true就执行循环体,如果false就循环终止,循环体执行完后就更新循环控制变量。然后就是再检测布尔表达式‘’‘’重复以上。
  17. System.out.print()和System.out.println()的区别:前者输出后不会换行,后者输出后会自动换行
  18. break在循环控制流程中用于强行退出循环,不执行循环剩余语句;continue用于终止某一循环过程,但是会接着执行下一次的循环判断。
  19. 通过continue或break加上标签可以实现goto的效果,但是前期不推荐使用。
  20. 如果两个方法名字相同,参数列表不同(个数不同、类型不同、参数的排序不同),返回类型可以不同也可以相同,参数类型不同,这个叫方法重载(overload)
  21. 命令行传参:运行一个程序的时候再传参给他,靠命令行参数给main()。
  22. 可变参数:用...表示,同时一定要放在形参的最后一位。
  23. 递归:自己调用自己的方法。递归必须包含递归头(什么时候不调用自身)和递归体(什么时候需要调用自己)。单基数很大的情况递归的时间复杂度会很大。
  24. 申明数组推荐 int[] a;  不推荐使用Int a[]; 前者是java首选。定义数组:int[] nums = new int[10];
  25. 面向对象:三大特性:封装、继承、多态
  26. 静态方法只能用静态方法,非静态方法实例化后可以使用静态方法。实例化的时候只用new一个即可。
  27. 静态方法不能访问非静态方法,原因是在内存中是先有静态内容,后有非静态内容。
  28. 类中的执行顺序:父类静态变量---父类静态块---子类静态变量---子类静态块---父类构造块---父类构造函数---子类成员变量---子类构造块---子类构造函数。
  29. 引用传递是传递的对象
  30. 一个类什么都不写也会存在一个方法,可以通过构造器给实例化初始值。如一个类为:public class A(){public A(){}},内层就是构造器,构造器可以同时存在有参构造和无参构造;调用的程序会根据new的这个对象是否传递参数自行判断。构造器是没有返回值的。
  31. 构造器的作用:使用new关键字来调用构造器
  32. 堆:存放new的对象和数组,可以被所有的线程共享,不会存放别的对象引用;  栈:存放基本变脸类型(包含基本类型的具体数值),引用对象的变量(存放这个引用再堆里面的具体地址)  方法区:包含所有的class和static变量,可以被所有的线程贡献。
  33. 类是一个模板:抽象;对象是一个具体的实例。静态属性,动态方法。方法用于调用。对应的引用:8个基本类型。属性:字段Field 成员变量;默认初始化:数字:0;char:u8888;boolean:false;引用:null。对象的创建和使用:必须使用new关键字创建对象,构造器 Person a = new Person();对象的方法:a.name();
  34. 封装:“高内聚,低耦合”:高类聚:类的内部数据操作细节自己完成,不允许外部干涉。低耦合:仅暴露少量的方法给外部使用。
  35. 封装可以提高程序的安全性,隐藏代码实现的细节,统一了接口,增加系统 的课维护性。
  36. Java中继承是单继承,没有多继承。继承分为子类和父类。不能直接访问private(java中所有的类都会继承Object类)。
  37. 继承this和super的区别:本身调用者的对象;super代表父类对象的应用。
  38. super注意点:super调用父类的构造方法,必须在构造方法的第一个;必须只能出现子类的方法或者构造器中;super和this不能同时调用构造方法。
  39. 方法重写:子类重写父类:方法名必须相同,方法列表也必须相同,不然就变成重载了;修饰符的范围可以扩大不能缩小:public > protected > default > private(注意:抛出异常的范围可以缩小不能扩大)
  40. 静态方法和非静态方法区别很大,重写和静态方法无关。static方法、final常量、private方法都不能重写。
  41. 为什么要重写:子类不一定需要或者不一定满足。
  42. 多态:可以实现动态编译。多态是方法的多态;父类和子类:有联系,注意类型转换异常;多态存在的必要条件:继承父类,方法需要重写,父类引用指向子类对象!
  43. 子类转父类可能会丢失一些自己存在的方法。
  44. instanceof:x instanceof y:x与y是否是一个父子关系
  45. 抽象类:在class前面添加abstract来实现抽闲类,抽象类只有方法名字,没有实现方法。抽闲类必须要由子类来实现,不能new出来。抽象类中可以写普通方法,抽象方法只能在抽象类中。
  46. 抽象类只能单继承,接口可以多继承。
  47. 普通类只有具体实现 ,抽象类有具体实现和规范(抽象的方法),接口只有规范。自己无法写方法,可以实现约束和实现分离。
  48. 接口是规范,定义的是一组规则。接口所有的定义都是抽象的,接口中定义的属性都是常量(通常不会使用)。接口都有实现类。类通过添加implement的关键字来实现接口,可以实现多个接口。
  49. 接口和抽象类都不能实例化,因为没有方法。
  50. 内部类
  51. 异常:error类对象由JVM虚拟机生成并抛出,大多数错误与代码的编写者所执行的操作无关。该异常发生时JVM直接自动选择线程终止。
  52. RuntimeException运行时异常,由逻辑错误引起。
  53. error是灾难性错误,是程序无法控制和处理,一旦出现JVM会直接选择终止线程。exception是可以被程序处理的,并且在程序中应该尽可能的去处理这些异常。
  54. 异常中 try-catch-finally,在try中执行代码,在catch中捕获异常,finally在任何情况下都执行。当要捕获多个异常的时候,catch中的异常等级应该又小到大来写。
  55. 可以通过throw来主动抛出异常
  56.  基础数据结构:1 byte(字节)=8 bits(位),long = 2 int = 4 short = 8 byte。1 float = 32 bits,1 double = 64 bits。char是16位 Unicode字符,最小\u0000 (0) ,最大\uffff (65535)。
  57. 类名:首字母大写驼峰。包名:小写。方法名:首字母小写驼峰。
  58. while和do...while的区别:后者至少执行一次。
  59. for(初始化; 布尔表达式; 步进){}
  60. for...each是JDK1.5后引入的,是一种更简洁更方便得数组遍历。
  61. break在循环语句中是跳出当前循环,continue是中断执行下一次循环,return是方法返回,把控制权交给其对应的调用语句。
  62.  构造方法(也叫构造函数或构造器):构造方法只能在对象创建的时候调用一次,构造方法和类的名字应该保持一致,且没有参数类型和返回值。如果类中没有构造方法,JVM会自动生成一个无参的构造方法。
  63. 方法重载:每个重载的方法都有独一无二的参数列表。重载的方法名必须相同、参数列表不同、返回类型可以不同。重载时编译器可以根据参数类型自动选择使用哪个方法。
  64. 方法重写:方法重写必须保持和父类,包括返回值、方法名、参数列表。方法重写需使用@override来标注。子类的重写的方法访问权限不能低于父类权限。
  65. 类初始化,String也是一个类,初始化是null。下图为成员的默认初始化。初始化也可以使用构造器初始化。
  66. 初始化顺序如下图
  67. 数组初始化int[] = a;和int a[];是等价的,
  68. java中不用手动对象销毁,但是需要知道对象作用域
  69. this和super:
  70. 访问控制权限,主要是修饰符的的使用
  71. 继承的关键字是extends,是显示继承
  72. 多态:指同一行为具有多个不同表现形式。实现多态的三种充要条件:继承、重写父类方法、父类引用指向子类对象
  73. 组合是将对象引用置于一个新的类中
  74. 1
  75.  代理:A不能直接调用B,A需要使用一个B的代理调用B
  76. static可以修饰成员变量和方法。静态方法可以通过“类名.方法名”进行直接调用。没有this关键字,静态方法中不能调用非静态成员变量和非静态方法。
  77. final修饰的类不能被继承、不能被重写。final修饰变量分两种情况:一是修饰基本数据类型,表示数据类型的值不能被修改。一是修饰引用类型,表示修饰后不能再指向另一个数据类型。
  78. 接口-interface是完全抽象的一个类,不提供任何方法的实现。接口中不能有任何构造方法
  79. 抽象类abstract是一种抽象能力弱于接口的类。在抽象类中可以构造方法、抽象方法、普通属性和方法、静态属性和方法。与接口一样不能被实例化。
  80. 异常机制try--catch--finally
  81. 内部类有访问外部类的访问权,内部类的方式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值