入门的水平要求

  • 注释
    行注释,多行注释,文档注释。
  • Java编码规范
  • Java关键字和保留字
  • 8种基本数据类型和4种引用数据类型
    byte,boolean,char,int,short,long,float,double,
    类,接口,数组,null
    基本数据类型所占字节数
    long,float要加后缀 l,f
    引用类型包括四种,不仅仅是类。
  • 理解常量和变量
  • 二,八,十,十六进制的相互转换
    二进制数以“0b or 0B”开头,八进制数以“0”开头,十六进制数以“0x or 0X”开头
    存储单位的换算:bit,b,k,M,G,T,P,E,Z,Y,B,N,D
  • 原码,反码,补码
  • ASCLL编码,UTF-8编码,Unicode编码
    ascll中:英文字母占一个字节,中文占两个字节
    UTF-8:一个英文字符占一个字节,一个中文(含繁体)占三个字节
    Unicode:一个英文占两个字节,一个中文(含繁体)占两个字节。
  • 基本数据类型转换(自动转换和强制转换)
  • 运算符
    比较难的就是理解位运算及其作用
  • if语句和switch语句
    1、if-else 语句
    2、if-else if 语句。具有很不错的效果
    3、switch后面的表达式中只能是 byte,int,short,char,String,枚举类型
  • 循环语句
    1、while
    2、do-while
    3、for
    4、for-each
    5、控制循环语句 continue,break,return
  • 数组类型
    1、定义数组的语句,初始化数组
    2、操作数组:取出数组元素的值;对数组元素进行赋值。
    3、理解数组变量,数组元素在内存中的存储位置
    4、理借栈内存,栈内存:栈内存存放基本数据类型变量和对象的引用。堆内存:存在类的对象
    5、定义并初始化多维数组,多维数组在内存中的存储机制
    6、操作数组的常用工具:
     int binarySearch(type[] arr,type value);
     int binarySearch(type[] arr,int fromeIndex,int toIndex,type value);
     type[] copyOf(type[] original,int newLength);
     type[] copyOfRange(type[] original,int fromIndex,int toIndex);
     boolean equals(type[] arr,type[] a2);
     void fill(type[] arr,int fromIndex,int toIndex,type val);
     void sort(type[] arr);
     void sort(type[] arr,int fromIndex,int toIndex);
     String toString(type[] arr);
     注意fromIndex : toIndex是含左不含右
  • 面向对象的三大特征及理解
  • 修饰符以及它们所限制的范围
    public-protected-default-private
  • 面向对象的概念
    引用数据类型,引用变量
    类,对象,属性,方法,类成员,构造器
  • 创建对象时的内存图
  • This关键字
    当成员变量和局部变量同名时,使用this关键字可以进行区分。最常见的就是,形参和成员变量同名。
  • Static关键字
  • 匿名对象
    匿名对象是指仅创建了对象而没有定义该对象的引用。
    匿名对象调用完毕就是垃圾,可以被垃圾回收器回收
  • Java中的方法
    Static修饰的方法
    方法的参数传递机制:值传递
    方法递归
    方法重载
  • 成员变量和局部变量
    在程序中,应该尽可能地缩小局部变量的作用范围,局部变量的作用范围越小,在内存中停留的时间越短,程序运行性能就越好
    如果变量是用来描述类或者对象的固有信息,比如一些固定不变的值的信息,需要将变量定义成类变量
  • 构造器
    构造器的作用:创建对象时,进行对象的初始化即对对象属性进行赋值处理
    如果类提供了带参的构造器,那么系统提供的默认的即无参的构造器便不会被调用
    考虑:当我们创建了一个对象的时候 ,JVM都干了一些什么事?
    static关键字修饰的特点?
    静态变量和局部变量的区别?
    1.归属不同2.内存中位置不同3.在内存中出现的时间不同4.调用方式不同
  • 封装
    封装的目的
    解决类的命名冲突、类文件管理问题的机制
    java包:主要是核心类,javax包:主要是扩展类,其他常用包的功能
  • 继承
    继承的目的
    继承造成了耦合性的增加,违背了高内聚,低耦合的原则,所谓内聚就是独立完成某件事的能力
    方法的重写,当父类的方法有private修饰时,在子类中定义同名同参的方法并不属于重写
    super关键字
    继承时父类的构造器不能被继承
    仔细考虑什么时候用继承
  • 继承–调用父类构造器
    子类在进行实例化时,会首先调用父类的构造器,以防子类中会用到父类的属性。调用父类的构造器又分为两种:隐式和显式。如果父类的关键字是隐式定义的,那么程序就会自动帮助我们调用父类的构造器,如果父类的构造器是显式定义的,那么子类就得显式定义一个构造器,其中显式的调用父类的构造器。super关键字可以实现对父类属性的初始化。在子类构造器中,super关键字一定要放在第一行,否则程序会首先调用默认的super进行初始化,后面super就不是第一次执行了。
    Override和Overload的区别
    理解this关键字和super关键字的作用
  • 多态
    理解多态
    多态的弊端
    Java程序中,引用变量只能调用它编译时类型的方法,而不能调用它运行时类型中独有的方法。或者可以理解为,父类类型的变量只能调用自己的有过定义的方法和属性,而不能调用子类特有的方法和属性
    使用引用类型的强制类型转换,可以实现父类类型的变量调用子类独有的方法,要求具有继承关系的两个类型之间才可以进行强制类型转换
    成员变量是事物的外物描述,成员方法是事物的具体功能
    多态继承中的内存图解
  • instanceof判断一个对象是否属于某个类
  • 继承和组合
    继承是实现类重用的重要方式,但是继承破坏了类的封装性,组合也是实现类重用的重要方式。
    为保证父类具有很好的封装性,在设计父类时要注意一下几个注意点:
    1、属性尽量用private
    2、父类中作为辅助其他方法的工具方法,为了防止子类的修改,应该使用private修饰
    3、父类中的方法需要被外部类调用,但又不希望子类重写该方法, 可以用final修饰
    4、父类中的方法可以被子类重写,但又不希望被其他类访问,可以用protected修饰
    5、不要在父类的构造方法中调用会被子类重写的方法。
    使用组合复用一个类的方法。即把一个类当成另一个类的组成部分,从而直接使用类中的public方法。通俗来看:就是在一个类中的成员变量中有另一个类的对象,这样通过这个成员变量就可以使用其他类的方法。
  • 包装类
    基本数据类型没有面向对象的特点,所以设计了他们所对应的包装类
    装箱和拆箱
    基本数据类型转换成字符串:String.valueOf()
    字符串转换成基本数据类型:Integer.parseInt() Float.parseFloat()
  • 打印对象
    toString()方法只是打印该对象的“包名+类名+@+hasdCode值”
    若打印对象的信息,需要重写toString方法
  • ==和equals
  • 类成员
    类成员变量,类方法,类初始化块
    对象可以访问类方法(这时会报警告),但是类成员不能访问实例成员
  • 单例类
    只能实例化一次,多于一次的实例化都是返回第一次创建的对象
    步骤:1、使用private修饰构造器。2、提供一个public static的方法调用构造器。2、创建一个private static的变量存放对象
  • 初始化块
    一个类中可以包含多个初始化块,初始化块的执行是有顺序的,初始化块首先执行,一行代码也是一个初始化块
    初始化块:可以当做无参的构造器来使用。
    静态初始化块是伴随着类的存在而存在,用于执行类的初始化动作,而且只执行一次。
    执行顺序:静态初始化块->普通初始化快->构造器
  • final
    final关键字实现了Java的不可变类。
    使用final修饰的变量不能够被重新赋值,使用final关键字修饰的方法不能够被子类覆盖,使用final关键字修饰的类不能够被继承。
    final定义的成员变量必须进行赋初值,系统不会自动的进行隐式的赋初值,如果不在定义时进行赋初值,必须在初始化块中进行初始化。
    final定义的局部变量在定义时可以不赋初值,但使用之前要赋初值而且只能赋值一次
    final修饰基本数据类型时,基本数据类型的值不可变
    final修饰引用数据类型时,引用变量上的值是对象的地址,这个地址时不可变的,但是对象的内容还可以被修改。
    构造不可变类:用private final修饰属性,用有参构造器实现属性的初始化,仅提供getter方法
  • 抽象类
    包含抽象方法的类是抽象类
    抽象类并不一定包含抽象方法
    抽象类不能被实例化,抽象类可以包含正常类所具有的成分。
    包含抽象方法的类只能被定义成抽象类
    抽象类可以包括构造方法,这个构造方法用于实现子类对于父类数据的初始化。
    抽象类可以包括非抽象的方法
    抽象类的作用:抽象类提供了子类应该做什么的一个模板,子类应该在这个模板的基础上进行扩展,从而避免了子类设计的随意性。
    分析是从具体到抽象,实现是从抽象到具体。
  • 接口
    接口是从抽象类中抽象出来的更为彻底的“抽象类”
    接口是一系列方法特征的集合
    一个接口中可以有常量的定义,接口只能继承接口
    接口中不包括构造器和初始化块,但是包括属性,方法,内部类。但由于没有构造器,所以属性只能是static final修饰的,而且系统也是默认它们是这样的。
    接口中的方法都是抽象方法,而且系统默认他们都是public abstract 的
    接口支持多继承
    接口的作用:1、定义引用类型的变量。2、被类实现。
    接口被具体类实现时,必须实现类的全部抽象方法,如果不实现全部的抽象方法,那么这个类就具有了抽象方法,这个类就必须是抽象类。
    接口类似于系统的总纲,体现的是一种规范,而抽象类则类似于一个系统实现过程中的中间产品,实现了部分功能,还有部分没有实现的功能。
    接口体现的是一种规范和实现分离的设计模式,充分利用接口可以很好降低程序各模块之间的耦合,从而提高系统的可扩展性和可维护性。
    接口体现的是规范和扩展,抽象类体现的是抽象和实现。
    接口的案例:1、扩展功能–将需要扩展的功能集合写在一个接口中,然后让需要被扩展的类实现这个接口。2、简单工厂模式–创建一个工厂类,在这个工厂类中创建并返回对象,需要该对象的类调用这个工厂类实现创建对象,当需要修改的时候只需要在工厂类中进行修改即可。
    Java8接口使用普通方法:需要借助两个关键字 static default。static使该方法成为静态方法,default定义的是默认的方法实现。
    抽象类做参数:抽象类引用抽象类派生出的子类的对象做参数。
    接口做参数:接口引用实现接口的类的对象做参数
    抽象类做返回值:返回抽象类派生出的子类的对象
    接口做返回值:返回实现接口的类的对象
  • 内部类
    内部类(嵌套类),外部类(宿主类)
    成员内部类、局部内部类、非静态内部类、
    静态内部类:静态内部类只能访问外部类的类成员。外部类不能直接访问内部类的成员
    匿名内部类:必须继承一个父类。创建类时就会创建对象,本质上就是一个子类匿名对象。无法定义构造器,通过初始化块进行初始化操作
  • 枚举类
    枚举类
    默认继承自java.lang.Enum
    构造器使用private修饰
    非抽象的枚举类不能被继承(final)
    所有实例在第一行显示列出,并使用public static final修饰
    Enum和switch语句的连用
  • Scanner获取键盘的输入
    1、两个方法:hasNextXxx(),nextXxx()
    2、nextInt()nextLine()先后出现时
     int accountNumber = Integer.parseInt(input.nextLine());将数字的读入改成:先读入字符串,再转成数字。
     int accountNumber = input.next();这种方法是直接使用next
  • Object类
    protected void finalize();
    Class<?> getClass();
  • System类的主要操作
    获取系统环境的相关信息
    获取指定的环境变量
    获取属性信息
    获取指定的属性信息
    获取当前时间
  • Runtime类
    输出处理器的数量
    输出总内存的数量
    输出最大内存的数量
    输出自由内存的数量
  • Java内存分配机制
  • String,StringBuffer,StringBuilder
    String:不可变类,字符串一旦定义就不可再变
    StringBuffer:是可变的,可以实现访问和修改等操作
    StringBuilder:类似StringBuffer,StringBuffer是线程安全的
    String和StringBuffer做形参不一样,String是不可变类,它的形参的改变对自身没有什么影响
     StringBuffer sb1 = new StringBuffer("hello");StringBuffer sb2 = new StringBuffer("world");System.out.println(sb1+"--"+sb2);change(sb1, sb2);System.out.println(sb1+"--"+sb2);public static void change(StringBuffer sb1, StringBuffer sb2) {sb1 = sb2;sb2.append(sb1);}

这里:赋值操作没有改变sb1的值???

Java系列--总纲相关推荐

  1. 我爱Java系列---【 maven依赖版本冲突的解决方法】

    我爱Java系列---[ maven依赖版本冲突的解决方法] 参考文章: (1)我爱Java系列---[ maven依赖版本冲突的解决方法] (2)https://www.cnblogs.com/hu ...

  2. Java系列笔记(1) - Java 类加载与初始化

    2019独角兽企业重金招聘Python工程师标准>>> 目录 类加载器 动态加载 链接 初始化 示例 类加载器 在了解Java的机制之前,需要先了解类在JVM(Java虚拟机)中是如 ...

  3. 跟老杨学java系列(一)前传

    跟老杨学java系列(一)前传 首先声明一下哈,本人文笔水平有限,不喜勿喷.欢迎大家留言探讨技术问题.其他问题概不回复. 上台来首先做个自我介绍(~~偷师相声开场白),本人从事IT开发行业快二十个年头 ...

  4. java sftpv3client_Ganymed SSH-2 for Java系列8之SFTPv3Client说明

    Ganymed SSH-2 for Java系列8之SFTPv3Client说明: SFTPv3Client是SSH for java的一个SFTP(协议版本 3), 客户端通过SSH-2连接的一个简 ...

  5. Java系列笔记(4) - JVM监控与调优【转】

    Java系列笔记(4) - JVM监控与调优[转] 目录 参数设置 收集器搭配 启动内存分配 监控工具和方法 调优方法 调优实例       光说不练假把式,学习Java GC机制的目的是为了实用,也 ...

  6. php数据库可转java数据库,php转java 系列2 Spring boo 链接数据库jdbc

    php转java 系列2 Spring boo 链接数据库jdbc JDBC 首先创建一个新项目,在创建项目时要注意导入依赖, 在项目创建成功后就会看到在 pom.xml 文件中找到,但是如果在创建项 ...

  7. Java系列笔记(3) - Java 内存区域和GC机制

    目录 Java垃圾回收概况 Java内存区域 Java对象的访问方式 Java内存分配机制 Java GC机制 垃圾收集器 Java垃圾回收概况 Java GC(Garbage Collection, ...

  8. 【Java系列】(四)Java多线程---线程安全

    前言: 记得大一刚学Java的时候,老师带着我们做了一个局域网聊天室,用到了AWT.Socket.多线程.I/O,编写的客户端和服务器,当时做出来很兴奋,回学校给同学们演示,感觉自己好NB,呵呵,扯远 ...

  9. 教老婆学java系列之奇妙的数据结构四

    教老婆学java系列之奇妙的数据结构四 数据结构最后一节 思考题:后台处理一件事,耗时较长,怎么将信息显示在页面上 问题解析: 1.前端触发,后端处理时间较长,前端不能等处理完成. 2.如果不等处理完 ...

最新文章

  1. 山东省百万奖金赛事来了!
  2. hdu 1003 dp
  3. matlab 类 方法,最好的组织MATLAB类的方法?
  4. MySQL: Connection Refused,调整 mysql.ini中的 max_connections
  5. GCD介绍(一): 基本概念和Dispatch Queue
  6. 从动力学角度看优化算法:一个更整体的视角
  7. php 格式化 sub,PHP DateTime sub()用法及代码示例
  8. java远程调用linux的命令或者脚本
  9. vue 生成发布包_Vue 3.0 终于正正正正正式发布了!
  10. mfs1.6.x故障一例,血的经验教训 推荐
  11. PHP FPM源代码反刍品味之三: 多进程模型
  12. java jstat结果分析_JVM调优总结 + jstat 分析
  13. java getidentifier_android – 如何使用getResource.getIdentifier()获取布局?
  14. 直播卖房和VR看房,到底是噱头还是新趋势?
  15. Kippo:一款强大的SSH蜜罐工具
  16. k8s集群搭建(一主多从)
  17. 学习TP5(一):TP5框架下载与快速入门使用
  18. foremost使用简介
  19. Nginx反向代理:多域名跳转多台服务器(研发需求)
  20. 【Android】PC端同步手机画面

热门文章

  1. 如何从“豌豆荚”下载APP的历史版本?
  2. 深入浅出HTML(针对后端攻城狮)
  3. vue3动态路由addRoute
  4. 程序猿生存指南-61 离巢之鸟
  5. (已发布源码)图像修复——上下文编码器以及加入全局判别器的改进(Context Encoder and Global and Local Discriminator)
  6. Java 中文 Unicode 编码转换
  7. 3.10 docker---概念介绍,安装和初识docker,docker的一些基本命令,使用docker部署一个nginx,
  8. Django计算机毕业设计jspm高校职称申报系统(程序+LW)Python
  9. Android的数据结构与算法----ArrayList源码解析
  10. Linux --- LV逻辑卷的创建和在线扩展