java语言使用总结


1. 概览

1.1 java概览

  1. JAVA平台分为:java se、java ee、java me
    java me: 主要用于控制移动设备和信息家电等有限存储的设备
    java se: java核心与基础
    java ee 企业应用开发相关完整解决方案
  2. api分类:核心api,可选api,特殊api
    核心api: 所有平台都应提供
    可选api: 扩充api,因平台不同而不同
    特殊api: 满足特殊需求的api
  3. 语言类型:强类型语言和弱类型语言、解释性与编译型语言
    强类型语言与弱类型: 是否需要先声明后使用;是否有变量类型;是否指定类型变量只能接受与之匹配的值;
    解释性: 具有专门的解释器对源码逐行进行解释并立即执行的语言。
    2020-6-1: 每次执行均需要进行解释;执行需要对特定平台而非机器码
    编译型语言: 专门的编译器将源码翻译成机器可以执行的代码
    2020-6-1: 一次编译,多次运行;无需平台,cpu直接执行
    java: 强类型、即编译又解释
    2020-6-1: java需要将源码编译成字节码 -> 编译型;java的字节码需要在jvm上运行 -> 解释型
  4. jvm确定统一标准:指令集、寄存器、类文件的格式、栈、垃圾回收堆、存储区
  5. 垃圾回收
    优点: 提高编程效率;保护程序完整性
    缺点: 影响程序性能;垃圾回收算法的不完备性
    思想: 发现无用对象;释放该对象所占的资源
  6. java 解释器规定:如果需要某个类被编译器直接执行,则需要类包含main方法,且必须为public static void
  7. java文件命名规则
    区分大小写: 必须以字符、_、$打头;支持Unicode;必须位非关键字
    后缀必须为.java
    文件名必须与public类保持一致,如无public类,则随意
  8. jdk、jre与jvm对比
    jvm: java virtual machine,java虚拟机。运行java 的核心虚拟机
    jre: java runtime environment,java实时运行环境。包含jvm及其他类加载、基础类库
    jdk: java SE development kit,java 标准开发环境。包含开发、编译、运行等所需的各种工具与资源
    关系: 一般情况下,jdk包含jre,jre包含jvm
  9. 面向对象是由面向对象分析(OOA)、面向对象设计(OOD)及面向对象编程(OOP)三部分组成
    OOA: 对目标进行分析,建立分析模型,并将之文档化
    OOD: 对OOA进行细化,得出设计模型
  10. 面向对象的基本特征:封装、继承及多态
    特点: 类是对同一类事物的抽象,对象是类的实例化,对象具有唯一性;Java类不支持多继承
    关系: 一般到特殊(继承);整体到部分(内部类)
  11. java注释:
	//: 单行注释
	/**/:多行注释
	/***/:文档注释
  1. java支持7种数据类型
    byte: 1字节
    short: 2字节
    int: 4字节
    long: 8 字节
    char: 2字节
    float: 4字节
    double: 8字节
    byte、short常量赋值给byte、short时,会直接为byte、short;long需要加后缀,否则视为int,容易出现截断的现象。
    当程序第一次使用某个字符串直接量时,会再常量池缓存该字符串,因此对象引用会相等。
    常量池是指在编译期间被确定病被保存再已编译.class中的一些数据
  2. 特殊浮点值:正无穷、负无穷与NAN
    所有的正无穷一样大,所有的负无穷一样大,NAN与任何均不等

1.2 UML(统一建模语言)

  1. 用例图:描述系统提供的系列功能,每个用例代表一个功能模块
  2. 类图:系统的静态结构
  3. 组件图:大型系统组件化图
  4. 部署图:描述软件系统如何部署到硬件环境中
  5. 顺序图:描述消息及时间维度

1.3 安装jdk

1.3.1 安装jdk

1.	去官网下载jdk11,并打开终端进入jdk所在文件夹下
2.  $sudo dpkg -i ./*.deb		//安装jdk,默认路径 /usr/lib/jvm
3.  $ sudo gedit /etc/profile		// 配置环境变量(全局)
		export JAVA_HOME=/usr/lib/jvm/jdk*
		export PATH=$JAVA_HOME/bin:$PATH
		export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
4. $ source /etc/profile
5. 注:windows系统不区分大小写,linux区分,写环境变量时,windows使用;,Linux使用:

1.3.2 jdk各个文件夹的作用

  • bin:jdk工具
  • cof:配置文件
  • include:平台特定头文件
  • jmods:jdk各种模块
  • lib:jdk工具补充jar包

2. 垃圾回收机制

垃圾回收是java的一大特色,java垃圾回收屏蔽了直接操作系统内存带来的风险,因此大大降低了java的学习门槛,降低了编程的bug数。

2.1 垃圾回收机制的特点

2.1.1 垃圾回收机制的优点

  • 提高编程效率:大大降低了直接操作内存带来的风险。
  • 保护程序的完整性

2.1.2 垃圾回收机制的缺点

  • 垃圾回收的开销影响程序的性能
  • 具有不完备性,不能保证100%的回收

2.1.3 垃圾回收机制的算法步骤

  • 发现无用对象:当不在使用对象时,将引用置为null。
  • 回收无用对象占用的内存空间

2.2 G1垃圾回收器

2.3 CMS垃圾回收器

2.4 Z垃圾回收器


java 程序结构:类存于文件中,方法存于类,语句存于方法。
编译过程中,出现“找不符号.”的问题:从类中是否存在该方法或者该变量的角度查起。
编译过程中,报“在类中找不到main方法(当一个文件中有多个类的情况下)”:将带有main方法的类放在文件最开始的时候。
manifest有什么作用:manifest文件用于定义jar包中哪个问津带有启动应用程序的main方法。
所有带小数点的数,java当做double来处理。
java是值传递,即拷贝传递
java中实例中永远都是默认的,而局部变量没有默认值,因此局部变量使用前需要赋予初始。
使用==比较两个primitive主数据或者判断两个引用是否引用同一个对象;使用equal判断两个对象是否在意义上相等,个人理解,内容是否是一样的。
&&与||会产生截短的效果,& 与 | 没有该效果
使用import语句不会改变程序的大小,只是省下每个类前面的包名而已
java.lang是基础包,无需import即可使用包内的类
抽象类是不能被实例化的
抽象方一定要被覆盖掉
只有抽象类中,才允许声明抽象方法
没有直接继承其他类的类会是隐含的继承对象
如何ArrayList取出的东西都会被当做object对象的引用,而不管他原来是什么对象
编译器是根据引用类型来判断有哪些method可以调用,而不是根据object的类型
instanceof可以判断对象是否是某一个对象
java的借口就好像是100%的纯抽象类
接口方法带有public和interface的意义,这两个修饰属于选择性的
如何判断应该是设计类、子类、抽象类或者接口类呢?

  • 如果新的类无法对其他的类通过IS-A测试,就设计不继承其他的类
  • 只有在需要某类的特殊化版本时,以覆盖或增加新的方案来继承现有类
  • 当你需要定义一群子类的模板时,又不想让程序员初始化该模板,设计出抽象的类给他们用
  • 如果想要定义出类可以扮演的角色,使用接口

java允许有类同名的方法,与构造函数的区别是返回值
一定要有不需要参数的构造函数
在创建新对象时,所有继承下来的构造函数都会执行
每个构造函数可以选择调用super或者this(),但不能同时调用
在Math这个类中的所有方法都不需要实例变量,因为这些方法是静态的,所有你无需Math实例
静态方法使用类名调用的方法
静态变量的值对所有实例来说都相同。
私有的构造函数代表这个类不能被本身以外的程序实例化
静态变量会在该类的任何静态方法执行之前初始化
静态的final变量就是常量
final的变量不能改变值,final的方法不能被覆盖,final的类不能被继承


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值