概述

1991年由sun公司开发的名称为Oak的语言,1994年更名为Java。

JDK:Java Development Kit,Java的开发和运行环境,Java的开发工具和JRE。

JRE:Java Runtime Environment,Java程序的运行环境,Java运行的所需的类库和JVM(Java虚拟机)。

Java常用命令:javac  是负责编译的部分,当执行javac时,会启动java的编译器程序。对指定扩展名的.java文件进行编译,生成了jvm可以识别的字节码文件,即class文件,也就是java的运行程序。java  负责运行的部分,会启动jvm加载运行时所需的类库,并对class文件进行执行。一个文件要被执行,必须要有一个执行的起始点,这个起始点就是main函数。

语法基础

数据类型:基本数据类型(四类八种) 引用数据类型(数组 类 接口)

基本数据类型:整数 byte short int long 小数 float double 字符 char 布尔 boolean,所占字节数分别为 1 2 4 8 4 8 2 1

数据度量单位:比特(位),bit 是计算机晶体管的一种状态(通电与断电)就是0与1,真与假,是计算机最基本的传输单位;字节 Byte 是计算机信息技术用于计量存储容量的一种计量单位,1Byte = 8bit ,1KB = 1024 Byte;字符 一个字符是一个单位的字形、类字形单位或符号的基本信息,UTF-8编码中,一个英文字母占1Byte,一个汉字占3-4Byte。

Java程序在运行时,需要在内存中分配空间,为了提高效率,就对数据进行了不同的空间划分,具体分为5种内存空间:

寄存器(程序计数器):保证线程切换后能恢复到原来的执行位置;

本地方法区:为虚拟机执行使用到的Native方法服务;

栈(虚拟机栈):存储的都是局部变量,方法被调用时,创建栈帧,只要数据运算完成所在的区域结束,该数据就会被释放;

堆:用于存储数组和对象,也就是实体。每个实体都有内存首地址值,堆内存中的变量都有默认初始化值,因为数据类型不同,值也不一样;

方法区:存储被虚拟机加载的类信息,常量,静态常量,静态方法等。(参考文档https://www.cnblogs.com/LoganChen/p/6824366.html

面向对象

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

关键字 static 是一个修饰符,用于修饰成员(成员变量和成员函数)。特点:可以实现对象中的共性数据的对象共享,被静态修饰的成员可以直接被类名所调用,静态随着类的加载而加载。静态方法只能访问静态成员,不可以访问非静态成员,原因是静态方法加载时,优先于对象,所以无法访问对象中的成员。静态方法中不能使用this super关键字,因为this代表对象,而静态在时,有可能没有对象,所以this无法使用。主函数是静态的。

成员变量和静态变量的区别:成员变量属于对象,也称实例变量;静态变量属于类,也称为类变量;成员变量存在于堆内存中;静态变量存在方法区中;成员变量随着对象创建而存在,随着对象被回收而消失;静态变量随着类加载而存在,随着类的消失而消失;成员变量只能被对象所调用,静态变量可以被对象调用,也可以被类名调用。所以,成员变量可以称为对象的特有数据,静态变量称为对象的共享数据。静态的生命周期很长。

静态代码块:就是一个有静态关键字标示的一个代码块区域。定义在类中。可以完成类的初始化,静态代码块随着类的加载而执行,而且只执行一次(new多个对象时就只执行一次),如果和主函数在同一类,优先于主函数执行。

静态代码块、构造代码块、构造函数同时存在时的执行顺序:静态代码块 〉 构造代码块 〉 构造函数。

关键字 final 是一个修饰符,可以修饰类(修饰后不可以被继承)、变量(修饰后是一个常量,只能赋值一次)、方法(不可以被重载)。

内部类:直接将A类定义在B类中,A类就称为内部类。内部类可以直接访问外部类的成员,而外部类想要访问内部类,必须要建立内部类对象。

匿名内部类:没有名字的内部类,就是内部类的简化形式。一般只用一次就可以用这种形式。匿名内部类其实就是一个匿名之类对象。想要定义匿名内部类:内部类必须继承一个类或者实现接口。

匿名内部类的格式:new 父类名或接口名  ( ) { 定义之类成员或者覆盖父类方法 }.方法名( );

异常

异常:程序在运行时候出现的不正常情况。Error:错误,需要修正程序解决;Exception:异常,可以有针对性处理方式。

线程

进程:正在进行中的程序。其实进程就是一个应用程序运行时的内存分配空间。

线程:进程中一个程序执行控制单元,一条执行路径。进程负责的是应用程序的空间标示,线程负责的是应用程序的执行顺序。

随机性原理:因为cpu的快速切换,哪个线程获取到了cpu的执行权,哪个线程就执行。

线程的五种状态:

新建状态(New):线程对象被创建;

就绪状态(Runnable):可执行状态,随时可被cpu调度执行;

运行状态(Running):线程获取cpu权限进行执行;

阻塞状态(Blocked):阻塞状态是线程因为某种原因放弃cpu使用权,暂时停止运行,直到线程进入就绪状态,才有机会转到运行状态;

消亡状态(Dead):线程执行完成了或者因异常退出了run()方法,该线程结束生命周期。

字符串

Java中,字符串一但被初始化,就不可以被改变,存放在方法区的常量池中。

StringBuffer 字符串缓冲区:构造一个其中不带字符的字符串缓冲区,初始容量为16个字符char,是一个长度可变的且可以存储任意类型数据的容器,since 1.0。

StringBuilder 字符串缓冲区:和StringBuffer类似,用在字符串缓冲区被单个线程是用的时候,二者区别,StringBuilder效率高,线程不安全,since 1.6。

集合

集合是用于存储数据的容器。

集合和数组的区别:数组固定长度,集合可变长度;数组可以存储基本数据类型 或 引用数据类型,集合只能存储引用数据类型;数组存储的元素必须是同一类型,集合存储的元素可以是不同数据类型。

数据结构:就是容器中存储数据的方式。

Collection :List 有序(ArrayList LinkedList Vector) 和 Set 无序(HashSet LinkedHashSet TreeSet)。

Iterator 迭代器:是一个接口,作用:用于取集合中的元素。

Map:Hashtable 底层是哈希表数据结构,线程安全,不可存null键,null值 since 1.0;HashMap:底层是哈希表数据结构,线程不安全,不可以存null键,null值 since 1.2;TreeMap:底层是二叉树结构,可以对Map集合中的键进行指定顺序的排序 since 1.2。

IO流

流可以理解为数据的流动,就是一个数据流。IO流最终要以对象来体现,对象都存在IO包中。

流的分类:输入流和输出流;因处理的数据不同又可以分为字节流和字符流。

字节流:处理字节数据的流对象。设备上的数据无论是图片或者dvd,文字,它们都以二进制存储的。二进制的最终都是以一个8位为数据单元进行体现,所以计算机中的最小数据单元就是字节。意味着,字节流可以处理设备上的所有数据,所以字节流一样可以处理字符数据。

那么为什么要有字符流呢?因为字符每个国家都不一样,所以涉及到了字符编码问题,那么GBK编码的中文用unicode编码解析是有问题的,所以需要获取中文字节数据的同时指定的编码表才可以解析正确数据。为了方便于文字的解析,所以将字节流和编码表封装成对象,这个对象就是字符流。只要操作字符数据,优先考虑使用字符流体系。

流的体系因为功能不同,但是有共性内容,不断抽取,形成继承体系。该体系一共有四个基类,而且都是抽象类。

字节流:InputStream     OutputStream     字符流:Reader     Writer

在这四个系统中,它们的子类,都有一个共性特点:子类名后缀都是父类名,前缀名都是这个子类的功能名称。

close( )和flush( )的区别:
flush( ):将缓冲区的数据刷到目的地中后,流可以使用。
close( ):将缓冲区的数据刷到目的地中后,流就关闭了,该方法主要用于结束调用的底层资源。这个动作一定做。

设计模式

单例:保证一个类在内存中的对象唯一性。

单例的其中两种创建方式:饿汉式 私有化构造函数,创建私有并静态的本类对象,定义公有并静态的方法,返回该对象;懒汉式 延迟加载方式

End

Java学习笔记:知识总结的更多相关文章

  1. 20145330《Java学习笔记》第一章课后练习8知识总结以及IDEA初次尝试

    20145330<Java学习笔记>第一章课后练习8知识总结以及IDEA初次尝试 题目: 如果C:\workspace\Hello\src中有Main.java如下: package cc ...

  2. JAVA学习笔记—review基本知识[反射与异常]

    JAVA学习笔记—review基本知识[反射与异常] 1.异常: 1.1异常的分类: Java会将所有的异常封装成对象,其根本父类为Throwable. Throwable有两个子类:Error 和E ...

  3. 20145330第十周《Java学习笔记》

    20145330第十周<Java学习笔记> 网络编程 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据.程序员所作的事情就是把数据发送到指定的位置,或者接收到指定的数据,这个就 ...

  4. 20145330第九周《Java学习笔记》

    20145330第九周<Java学习笔记> 第十六章 整合数据库 JDBC入门 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JD ...

  5. 20145330第八周《Java学习笔记》

    20145330第八周<Java学习笔记> 第十五章 通用API 通用API 日志:日志对信息安全意义重大,审计.取证.入侵检验等都会用到日志信息 日志API Logger:注意无法使用构 ...

  6. 20145330第七周《Java学习笔记》

    20145330第七周<Java学习笔记> 第十三章 时间与日期 认识时间与日期 时间的度量 GMT(格林威治标准时间):现在不是标准时间 世界时(UT):1972年UTC出来之前,UT等 ...

  7. Java学习笔记4

    Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...

  8. Java学习笔记心得——初识Java

    初识Java 拿到这本厚厚的<Java学习笔记>,翻开目录:Java平台概论.从JDK到TDE.认识对象.封装.继承与多态...看着这些似懂非懂的术语名词,心里怀着些好奇与担忧,就这样我开 ...

  9. java学习笔记12--异常处理

    java学习笔记系列: java学习笔记11--集合总结 java学习笔记10--泛型总结 java学习笔记9--内部类总结 java学习笔记8--接口总结 java学习笔记7--抽象类与抽象方法 j ...

  10. java学习笔记11--集合总结

    java学习笔记系列: java学习笔记10--泛型总结 java学习笔记9--内部类总结 java学习笔记8--接口总结 java学习笔记7--抽象类与抽象方法 java学习笔记6--类的继承.Ob ...

随机推荐

  1. 一些网站的meta标签的作用

    转载:https://www.cnblogs.com/Lily-nercel/p/6693293.html <!DOCTYPE html> <html lang="en&q ...

  2. 复杂链表的复制(python)

    题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head.(注意,输出结果中请不要返回参数中的节点引用,否 ...

  3. poj2635(千进制取模+同余模定理)

    题目链接:https://www.cnblogs.com/kuangbin/archive/2012/04/01/2429463.html 题意:给出大数s (s<=10100) ,L (< ...

  4. Matches Game

    Matches Game http://poj.org/problem?id=2234 Time Limit: 1000MS   Memory Limit: 65536K Total Submissi ...

  5. mybatis 返回类型为 java.lang.String 接收为null的情景

    <select id="selectOnly" parameterType="java.util.Map" resultType="java.l ...

  6. 【mysql】分区表

    分区表是什么? 分区表可以按照事先创建的规则,对mysql的记录进行分组,每一个组具有一个独立的逻辑单元来存储该组的数据.典型的如:按照创建时间的年份分组,按照id的顺序分组(每1000万条数据分一个 ...

  7. [剑指Offer]35-复杂链表的复制

    链接 https://www.nowcoder.com/practice/f836b2c43afc4b35ad6adc41ec941dba?tpId=13&tqId=11178&tPa ...

  8. f5会话保持

    B/S架构的建议选择 inset cookie :c/s架构的 建议选择 sorce ip 1.  Introduction to session persistence profiles Using ...

  9. @RequestMapping 和 @GetMapping @PostMapping 区别

      @RequestMapping   和  @GetMapping @PostMapping 区别 @GetMapping是一个组合注解,是@RequestMapping(method = Requ ...

  10. dUMP:A new value is to be assigned to the field "<L_BOX>"

    DUMP: A new value is to be assigned to the field "<L_BOX>", although this field is e ...