1,面向对象的三大特性:封装、继承、多态

  • 封装:通过访问控制符来操作那些暴露那些隐藏,按权限递增列出。private(当前类访问权限)、default(包访问权限)、protected(子类访问权限)、public(公共访问权限)

  • 继承:Java是单继承的,关键字extends。作用是让子类对父类功能进行扩展,能获取父类的成员变量和方法。也是一种规范吧

    • 1,注意不过子类不能获取父类的构造器
    • 2,尽量隐藏父类内部的数据
    • 3,不要让子类可以随意访问、修改父类的方法。
    • 4,尽量不要在父类构造器中调用将要被子类重写的方法
    • 5,如果要调用父类的方法和属性,直接用super.方法名或者变量名
  • 多态:一个是编译时类型,一个是运行时的类型。编译类型由声明的类型决定,运行类型由实际赋值的类型决定。如果编译时类型和运行时类型不一致,就可能出现多态

    • 上转型:把一个子类对象直接赋给一个父类对象引用变量,无须进行类型转换,因为系统自动完成的。证实了子类是一个特殊的子类。

2,数组是引用数据类型,定义数组时不能指定数组的长度

3,重写和重载:

  • 重写是发生在继承的父子类之间的,子类有和父类相同的方法(包括方法名,返回值,参数个数和类型)

  • 重载发生在同一个类中,方法的方法名相同,返回值、参数不同

  • 重写父类方法时,访问的权限只能更大或者相等

  • 方法重载时,尽量不要包含可变形参,可读性降低了。

4,强制类型转换

  • 基本类型,只能在数值类型之间进行,数值类型不能与布尔类型之间进行转换。

    • 基本类型包含数值型和布尔类型。数值类型包括byte、short、int、long、char、float、double,布尔类型包括turn和false
  • 引用类型,有继承关系的两个类型之间进行

    • 引用类型包括类、接口、数组
    • 空类型既是null类型,空引用(null)只能转换成引用类型。

5,补码计算规则

  • 正数的补码和原码相同;负数的补码是其反码加1。补充,记得补码的最高位是符号位,0表示是正数,1表示是负数。

6,除零异常

  • 一般发生除0异常是整数才会有的。浮点数除0和整数除0.0,都就不会异常

  • Java提供了三个特殊的浮点数值,正无穷大、负无穷大和非数(NaN)。

  • 正浮点数除以0就会得到正无穷大;负浮点数除以0就会得到负无穷大;0.0除以0.0或者负数开方都得到一个非数(NaN)。

  • 所有正无穷大的数值是相等的,所有的负无穷大的数值也是相等的。非数都是不相等的。

7,float a=3.4;//这样是会出现错误的,因为3.4默认是double类型的。如果要将一个的double类型的数转换成float类型就要进行强制类型转换。

8,int c=++a + 3;//运算顺序是a先自增再进行算术运算

9,左移(<<)、右移(>>)

  • 左移n位就相当乘以2的n次方,如5 << 3,就是5*(2的3次方)= 40;负数也一样算,只不过在前面加一个负号;

  • 右移n位就相当除以2的n次方,这都是对于正数而言的,如果是负数就要按原始方法来

10,静态导入,减少程序中代码的编写。

  • 格式:import static package.subpackage…ClassName.*;

    • 如:
      import static java.lang.System.*;
      import static java.lang.Math.*;
      类里面就可以直接用了,out.println(sqrt(256));

11,super(和this)不能出现在static修饰的方法中

12,instanceof运算符,前一个操作数通常是引用类型的变量,后一个操作数通常是一个类。这两个参数通常用有继承关系,要不就会引起异常编译无法通过。

  • 主要应用用来判断一个对象的类型是否能成功,提高代码健壮性

13,初始化块的的执行在构造器之前就执行了,而静态初始化块又比普通初始化执行要早。静态代码块和静态成员是按代码的排列顺序来执行的

14,静态成员不能访问非静态成员,包括实例变量和实例方法

15,如果在静态方法里面,用this引用调用某成员,无法指向适合的对象。所以,static修饰的方法中不能使用this引用。

16,静态成员不能直接访问非静态成员。如:静态方法不能直接调用非静态方法。

17,类代码里没有定义构造器,系统将为它提供一个默认无参的构造器。如果有定义,系统就不会默认提供了。

18,如果希望通知垃圾回收机制某个对象,就要把这个对象引用变量赋值为null,如:Person p = new Person(); p = null;

19,初始化块的的执行在构造器之前就执行了,而静态初始化块又比普通初始化执行要早。静态代码块和静态成员是按代码的排列顺序来执行的

20,自动装箱拆箱过程,Integer缓存一个长度为256的数组,保存的值在-128到127。

  • 如:
    Integer int1 = new Integer(6);
    Integer int2 = Integer.valueof(6);
    int1 =int2;//这样就是直接从缓存中取Integer对象。

21,常量池专门用于在编译时就被确定下来并被保存在已编译.class文件中的一些数据。

  • 发现这几种情况的在编译时期不能被确定下来。

    • String s1 = “s111”;
      String s2 = “s222”;
      String s3 = s1 + s2;
    • 因为s1 s2是普通的变量,在编译时期无法确定下来,所以s3的值编译器无法在编译时期就确定下来。如果s1 s2用final修饰这样执行“宏替换”,在编译时就能被确定下来。
    • 宏替换:使用final修饰,指定初始值,并且该值在编译时期就能被确定下来了。
      String s4 = s1 + String.paraseString(“123”);//这样包含了方法也不能在编译时确定下来

22,final修饰属于不可变类型。如果修饰对象是引用类型时,不能改变其对象,却能改变对象的属性。

  • 例如:final修饰指定的某人,就不能再改边指向其他人,但却能改变修饰人的一些属性(年龄,姓名等)

    • final Person p = new Person();
    • p = null;//不能再改变对象
    • p.setAge(23);//这样是可以的,通过set方法改变

23,两个btye类型的数进行算术运算时,这两个数会被提升为 int 类型。

  • byte a = 127;
    byte b = 127;
    b = a + b; // error : cannot convert from int to byte
    //因为 a+b 操作会将 a、b 提升为 int 类型,所以将 int 类型赋值给 byte 就会编译出错

24,运算类型自动提升。

  • short s1= 1; s1 = s1 + 1; 该段代码有错,short类型在进行运算时会自动提升为int类型,也就是说s1+1的运算结果是int类型。

  • short s1= 1; s1 += 1; 该段代码没错,+=操作符会自动对右边的表达式结果强转匹配左边的数据类型,所以没错

25,栈常用于保存方法帧和局部变量,而对象总是在堆上分配

26,final修饰的方法不能被重写,完全可以被重载

27,abstract不能用于修饰成员变量,不能修饰局部变量,不能修饰构造器。

28,static和abstract并不是绝对互斥的,虽然不能用时修饰某个方法,但它们可以同时修饰内部类

29,接口定义的变量只能是常量,如:int i = 20;//系统编译时,自动添加public static final修饰

30,接口是多继承的(多实现的),类属于单继承的

31,接口的注意用途:

  • 定义变量,也可用于进行强制类型转换

  • 调用接口定义的常量

  • 被其他类实现,就是规范,或者回调,为系统提供更好的可扩展性和可维护性


Java 基础整理(一)相关推荐

  1. 面经 | Java 基础 整理

    文章目录 Java 基础 一.整体观/理论/概念 JDK和JRE的区别 Java 为什么可以一次编写.到处运行? java运行快吗 是编译还是解释型语言 什么是API import java 和jav ...

  2. JAVA基础整理(二):数组

    记录JAVA基础,主要是数组部分的知识点. 该系列文章仅供自己复习使用,记录学习过程中遇到的值得注意的问题,并非记录全部知识点细节. 文章目录 前言 一.什么是数组 1.数组的部分注意事项 2.数组的 ...

  3. JAVA基础整理-6.Java数据类型

    数据类型的分类 Java 语言的数据类型分为两种:基本数据类型和引用数据类型. 2) 引用数据类型建立在基本数据类型的基础上,包括数组.类和接口.引用数据类型是由用户自定义,用来限制其他数据的类型.另 ...

  4. JAVA基础整理-100.Java 多线编程

    Java线程的概念:什么是线程? Windows 系统是多任务操作系统,它以进程为单位. 系统可以分配给每个进程一段有限的执行 CPU 的时间(也称为 CPU 时间片 单任务的特点就是排队执行,也就是 ...

  5. Java基础整理(二)

    1,对象的强.软.弱和虚引用 强引用:被引用时,处于可达状态,不能被回收 软引用:当内存不足时,即使有引用也会被回收 弱引用:当系统的垃圾回收机制运行时,就会被回收 虚引用:不能通过虚引用来获取被引用 ...

  6. Java基础整理笔记

    入门 ①常量.变量 1.字符常量System.out.println('A');System.out.println('6');System.out.println(''); //错误!//单引号间有 ...

  7. java基础整理_java基础部分整理

    一.常用的dos命令操作符 什么是dos命令 ​window操作系统通过命令提示符cmd模拟ms-dos系统的功能. 常用的dos命令 ​ 切换当前盘 :想去那个盘,直接那个盘加: ​快捷打开cmd ...

  8. Java基础整理(三)

    1,JDK1.5增加泛型很大程度上都是为了让集合记住其元素的类型. 2,在接口.类.方法后增加尖括号,尖括号里放一个数据类型. 3,JDK1.5改写后List接口.Iterator接口.Map接口 4 ...

  9. java基础学习整理(一)

    java基础学习整理(一) lesson1: D0s命令: 1.回到根目录,>cd \ 2.复制命令行下的内容,右击标记所要复制的内容,这样就已经复制好了,右击粘贴就可以了. 3.查看,设置环境 ...

最新文章

  1. 张一鸣、王欣、罗永浩三家对垒微信,张小龙如何应对?
  2. 残缺棋盘问题算法分析_javascript使用递归回溯算法和贪心算法解决马踏棋盘问题...
  3. Citrix无法访问本地磁盘
  4. python renamer模块_【免费工具集】4种免费Maya Python脚本集合:重命名、检查UV、分配重叠模型、选边,尽在EL Tool Pack...
  5. 在Java EE应用程序中实现自动重试
  6. LeetCode 555. 分割连接字符串
  7. 计算机网络数据链路层 --- 后退n帧协议(GBN)
  8. 数据库事务及事务的特征
  9. vue 自定义组件使用v-model
  10. Python中的浅复制(shallow copy)和深复制(deep copy)
  11. 二维图像(数组)的fftshift
  12. 获取基金数据python库_PYTHON爬取基金数据及基金筛选
  13. 怎么把word压缩到最小?
  14. 巨美国际教您如何开好网店?
  15. GY-BMP280-3.3 高精度大气压强传感器模块
  16. Spring Aop(入门篇)
  17. 足球html游戏,[盘点]球迷不可错过的足球类网页游戏
  18. php模板引擎 smarty笔记
  19. 纯JS省市区三级联动
  20. 六、考研数据结构笔记——数组与广义表

热门文章

  1. 怎么把c语言变成汇编语言,如何把汇编语言转换成C语言
  2. python组件的react实现_【React源码解读】- 组件的实现
  3. 7000字整理: 全网最详细Pandas合并数据集操作总结
  4. 黄渤高情商:小S和林志林同时掉到水里,你先救谁
  5. 一种在智能对话中实现上下文功能的方法
  6. 汇编语言比C51需要效率高,汇编语言与C51语言实现跑马灯实验的比较 -
  7. 特斯拉CEO马斯克:可能明年3月左右在中国推出Model S Plaid
  8. 华为捐赠欧拉 共建数字基础设施开源操作系统
  9. 开着开着,Model S天窗飞了!特斯拉回应...
  10. 《贪玩蓝月》年入10亿?背后的玩法也太“流氓”了