Java学习笔记(四)

字符串

  • 字符串应用主要分为String类操作与字符串生成器
  • 在程序中频繁的进行附加字符串则使用字符串生成器StringBuilder

数组

概述
  • 数组是具有相同数据类型的一组数据的集合
数组创建
  • 先声明,再用new运算符进行内存分配
  • 声明的同时为数组分配内存
数组初始化
int arr[] = new int[]{1,2,3,5,25};        
//第一种初始化方式
int arr2[] = {34,23,12,6};                   
//第二种初始化方式
int[] arr = new int[3]; 
arr[0] = 1; // 为数组的第1个元素赋值为1
arr[1] = 2;    // 为数组的第2个元素赋值为2
arr[2] = 3; // 为数组的第3个元素赋值为3
//第三种初始化方式
高维数组创建以及初始化
数组元素类型 数组名字[ ][ ];
数组元素类型[ ][ ] 数组名字;
type arrayname[][] = {
      {value1,value2…valuen},
      {value1,value2…valuen}
      …
};

面向对象概述

  • In other words,The properties and behavior of similar things encapsulated into the class

多态

  • 父类对象应用于子类的特征就是多态
  • 多态性允许以统一的风格编写程序,以处理种类繁多的已存在的类以及相关类,这统一风格可以由父类来实现,根据父类统一风格的处理,就可以实例化子类的对象。由于整个事件的处理都只依赖于父类的方法,所以日后只要维护和调整父类的方法即可,这样降低了维护的难度和时间
  • 抽象类不能实例化对象。在多态的机制中,父类通常会被定义为抽象类,在抽象类中给出一个方法的标准,而不给出实现的具体流程,实质上这个方法也是抽象的
  • 多态中最重要的是抽象类与接口,由抽象方法组成的集合就是接口

类成员

成员变量
  • 成员变量是在类体中定义的变量,即全局变量
成员方法
  • 成员方法是对象行为的描述
权限修饰符
  • public
  • private
  • protected

this关键字

静态变量、常量、方法

  • 在静态方法中不可以使用this关键字
  • 在静态方法中不可以直接调用非静态方法
  • 在Java中规定不能将方法体内的局部变量声明为static的

主方法

  • 主方法也是静态的,所以要直接在主方法中调用其他方法,则该方法必须也是静态的
  • 主方法没有返回值
  • 主方法的形参为数组

对象

对象的比较
  • 在Java语言中有两种对象的比较方式,分别为“==”运算符与equals()方法,实质上这两种方式有本质区别
  • equals()方法是String类中的方法,它用于比较两个对象引用所指的内容是否相等
  • “==”运算符比较的是两个对象引用的地址是否相等
对象的销毁
  • Java中存在一种垃圾回收器
  • 对象被视为垃圾有两种情况,一种是对象引用超过其作用范围或者将对象赋值为null
  • 垃圾回收器只能回收那些由new操作符创建的对象
  • 在Java中提供了一个finalize()方法,这个方法是Object类的方法,它被声明为protected,用户可以在自己的类中定义这个方法,如果用户在类中定义了finalize()方法,在垃圾回收时首先调用该方法,并且在下一次垃圾回收动作发生时,才能真正回收对象占用的内存
  • 有一点需要明确的是,垃圾回收或是finalize()方法不保证一定会发生,比如Java虚拟机面临内存损耗待尽的情形,它是不会执行垃圾回收的。由于垃圾回收不受人为控制,具体执行时间也不确定,所以finalize()方法也就无法执行,为此,Java提供了System.gc()方法强制启动垃圾回收器,这与给120打电话通知医院来救护的道理一样,告知垃圾回收器来清理

包装类

  • Integer
  • Long
  • Short
  • Boolean
  • Byte
  • Character
  • Double
  • Float
  • Number

数字处理

数字格式
  • DecimalFormat类中使用一些特殊字符构成一个格式化模板,使数字按照一定规则进行匹配
字符 字符含义
0 代表阿拉伯数字,使用特殊字符“0”表示数字的一位阿拉伯数字,如果该位不存在数字,则显示0
# 代表阿拉伯数字,使用特殊字符“#”表示数字的一位阿拉伯数字,如果该位存在数字,则显示字符,如果该位不存在数字,则不显示
. 小数分隔符或货币小数分隔符
- 负号
分组分隔符
E 分隔科学技术法中的尾数和指数
% 本符号放置在数字的前缀或后缀,将数字乘以100显示为百分数
\u2030 本符号放置在数字的前缀或后缀,将数字乘以1000显示为千分数
¤\u00A4 本符号放置在数字的前缀或后缀,作为货币记号
本符号为单引号,当上述特殊字符出现在数字中,应为特殊符号添加单引号,系统会将此符号视为普通符号处理
数学运算
  • Math类
  • Math.random()方法是可以产生随机数的
随机数
  • 在Math类中存在一个random方法,此方法是可以产生一个0-1的double型数据
  • m+(int)(Math.random()*n)此公式可以产生一个m~m+n之间的一个随机数
  • Random类,Java.util.Random类,可以通过实例化一个Random对象创建一个随机数生成器。以这种形式实例化对象时,Java编译器以系统当前时间作为随机数生成器的种子,因为每时每刻的时间不可能相同,所以产生的随机数将不同,但是如果运行速度太快,也会产生两次运行结果相同的随机数。同时也可以在实例化Random类对象时,设置随机数生成器的种子
方法 作用
public int nextInt() 返回一个大等于0小于10的整数
public int nextInt(int n) 返回大等于0小于n的整数
public long nextLong() 返回一个随机长整型值
public boolean nextBoolean() 返回随机布尔型值
public float nextFloat() 返回一个随机浮点型值
public double nextDouble() 返回一个随机双精度值
public double nextGaussian() 返回一个概率密度为高斯分布的双精度值
大数字
  • BigInteger,BigInteger支持任意精度的整数,也就是说在运算中BigInteger类型可以准确的表示任何大小的整数值而不会丢失任何信息
  • BigDecimal,BigDecimal类支持任何精度的定点数,可以用它来精确计算货币值

Annotation注解

元数据
  • 元数据从metadata一词译来,就是“关于数据的数据”的意思,元数据的功能有很多种,元数据可以用来创建文档,跟踪代码的依赖性,执行编译时格式检查,代替已有的配置文件
  • 根据它所起的作用分为三类,编写文档,代码分析,编译检查
  • 元数据以标签的形式存在于Java代码中
  • 元数据描述的信息是类型安全的,即元数据内部的数据都是有明确类型的
  • 元数据需要编译器之外的工具额外的处理用来生成其他的程序部件
  • 元数据可以存在与Java源码中也可以存在于编译后的class文件内部
注解应用场合
  • 生成文档,也是Java中最早提供的注解,@see、@parap、@return等
  • 跟踪代码依赖性,实现替代配置文件功能,比较常见的spring2.5开始基于注解配置,作用就是减少配置文件的数量
  • 在编译时进行格式检查,@override检查方法是否为覆盖方法
注解分类
根据注解参数的个数
  • 标记注解:一个没有成员定义的Annotation类型被称为标记注解,这种annotation类型仅使用自身的存在与否来为我们提供信息,比如@override
  • 单值注解
  • 完整注解
根据注解使用方法和途径
  • jdk内置系统注解,JavaSE中内置三个标准注解,定义在java.lang中,@override、@Deprecated(过时方法)、@SuppressWarnnings(用于通知Java编译器禁止特定的编译警告)
  • 元注解
  • 自定义注解(第三方提供和自己定义)
基本注解使用注意事项
  • @override,检查所检测方法的名字是否覆盖对了父类方法的名字
  • @Deprecated,@Deprecated这个annotation类型和javadoc中的@deprecated这个tag是有区别的,前者是java编译器识别,后者是被javadoc工具识别用来生成文档,使用@Deprecated注解标示方法过期,同时在方法注释中用@deprecated tag标示该方法已经过时
  • @SuppressWarnnings,抑制编译器的警告,它有一个类型为String[]的成员,这个成员的值为被禁止的警告名
注解学习参考文章
posted @ 2016-10-01 22:07  纪伟  阅读(355)  评论(0编辑  收藏  举报