java编程自学记录(day12)

基本类型和包装类
 1)8种基本的数据类型分别对应了8种包装类,每个包装类都封装了一个对应的基本类型成员变量
 同时还提供一些针对该数据类型的实用方法:
 java.lang.Integer 对应  int
 java.lang.Long  对应  long
 java.lang.Double 对应  double
 java.lang.Float  对应  float
 java.lang.Character 对应  char
 java.lang.Byte  对应  byte
 java.lang.Boolean 对应  boolean
 2)Integer的作用是让基本类型int作为一个引用类型去看待。这样就可以参与到面向对象的编
 程方式中去了,其它包装类类似。
 3)“装箱”、“拆箱”
 从基本变量类型转变为引用类型的过程称之为“装箱”,反之则成为“拆箱”
 eg:
  装箱:
   法1:Integer i = new Integer(1);
   法2:Integer i = Interger.valueOf(2);
   法3:Integer i = 2; 自动装箱,编译后相当于i = Interger.valueOf(2);
  拆箱:
   法1:int a = i.intValue();
   法2:int a = i; 自动拆箱,编译后相当于a = i.intValue();
 4)自动装箱,自动拆箱(java 1.5及以后版本的特性)
 在编译源程序时,编译器会预处理。将未作差想和装箱工作的语句自动拆箱和装箱
 5)包装类一些常用的功能
  a.静态方法parseInt(String str)
   可以将相应数据类型的字符串转换成该字符类型的基本类型值,但是该字符串在类型上
  必须与目标类型兼容
  b.静态方法toBinaryString(int i)
   将int型数据转换成二进制的字符串,相应的还有十六进制、十进制等。
  c.所有包装类具有的几个共通的常量
   Interger.MAX_VALUE
   Interger.MIN_VALUE

BigDecimal类
 1)位于java.Math.BigDecimal,用于表示精度比Double更高的浮点型
 2)创建一个BigDecimal实例,可以使用构造方法用字符串描述一个浮点数作为参数传入,也可以使用静态方法valueOf()
  BigDecimal(String numberFormatString)
 eg: BigDecimal  num2 = new BigDecimal("3.20");
     num2 = BigDecimal.valueOf("3.20");
 3)四则运算
 a.不能使用符号进行计算,需要调用方法。计算的返回值依然为BigDeciaml对象
 加:add()  减:subtract() 乘:multipy()  除:divide()
 b.除法时需注意:除法结果为无限不循环小数时,一定需要定取舍模式,否则一直计算下去会内存
 溢出
 eg: num3 = num2.divide(num1, 8, BigDecimal.ROUND_HALF_UP);
  计算:num2/num1,保留八位小数,最后一位四舍五入
 4)BigDecimal对象可以转换成基本类型,使用方法:
  intValue()。
 
BigInteger类
 1)位置java.Math.BigInteger。可以保存比long更长位数的整数,理论上内存有多大,他就能存多长
 2)使用方法与BigDecimal完全一致
 
Collection框架及List集合
 1)Collection是集合的顶级父类:一个接口。其下有两个子类:List和Set,也都是接口
  List:元素可重复 List都是有序的
  Set:元素不可重复 Set大部分是无序的
ArrayList
 List是可重复集的父接口,有两个常用的子类实现:ArrayList和LinkedList
 2) ArrayList内部结构是数组,修改效率较低,但是查询效率高。
  LinkedList内部结构是链表,修改效率较高,但是查询效率低。
 3)List和ArrayList均处于java.util包下
  使用List不需要在创建时考虑容量。集合的容量是可以自动扩充的
 4)集合可以存放任意类型的元素。但是在实际编程中发现,我们几乎不会向集合中存放一种以上不同类型的元素
 eg: List<String> list = new ArrayList<String>();
  指定了集合中存放的是String类型元素
 5)contains(Object obj)方法,检查给定对象是否被包含在集合中
  检查规则:将obj对象与集合中每个元素进行equals比较(调用元素的equals()方法),若有equals返回true
 则比较结果为true,若所有元素均返回false,则最终结果是false
  因此元素的equals()方法很重要
 6)remove(Object obj)
  调用元素的equals()方法进行比较,档equals方法返回true时,将对应元素删除。档存在多个相同元素时,只删除
 第一次找到的那个
 7)批量操作
  addAll(Collection c)
  该方法允许将集合c中的所有元素存入该集合。这里参数为Collection,表示任何集合类型都可以将其元素存入其他集合中
  removeAll(Collection c)
  从当前集合中删除形参集合中的元素(删交集),也是使用equals()方法实现的
  retainAll(Collection c)
  只保留当前集合于形参集合重复的元素(取交集),也是通过equals()方法实现的
 8)其他方法
  Object get(int index)
  根据下表获取对应位置的元素并返回,从0开始
  注意:这里的返回值默认情况下是Object,在使用时要进行类型强制转换,但是在创建时若指定了集合存放的元素类型,
  则返回值会自动变为相应的元素类型
  Object set(int index, Object newElement)
  将index位置的元素修改为newElement,修改后会返回被修改的元素
  add(int index, Object newElement)
  向集合中插入一个元素,add的重载方法,插入位置后,以后的元素自动向后移动
  Object remove(int index)
  根据下表删除元素,返回的是被删除的元素
  Object[] toArray()
  集合转换为数组
  T[] array = list.toArray(T[0]);
  将集合按照T类型数组进行转换,得到的结果是T[]类型,而不是Object[]类型,方便了很多
 
迭代器
 所有Collection的实现类都实现了其iterator方法,该方法返回一个Iterator接口类型的对象,用于实现对几何元素的
 迭代遍历。Iterator定义了三个方法:
 boolean hasNext(); 判断指针后面是否有元素
 E next(); 指针后移,返回当前元素
 void remove(); 在原集合中删除刚刚返回的元素,即指针指向的元素,不能在指针没有移动的情况下连续调用两次
 1)生成方法:
 Iterator<String> it = list.iterator();
 2)Iterator在java.util包下
   * 定义的是一个接口,定义了遍历器应该有的方法,不同的集合返回的Iterator不都是同一个子类实现的
 3)调用next()之前,一定要先调用haiNext()
 4)在使用迭代器迭代的过程中,不能通过集合的增删操作来改变集合的元素数量,否则会引发迭代异常,要删除的方法只有
 通过Iterator提供的remove()方法进行删除

java的泛型机制(Java Se 1.5以后有的)
 泛型的本质是参数化类型,在类、接口、方法的定义过程中,所操作的数据类型是被传入的参数指定
 eg:ArrayList类的定义如下:
  public ArrayList<E>{
   ... ...
   public boolean add(E e){...}
   public E get(int index){...}
  }
  在声明一个ArrayList对象时,使用如下方法:
  ArrayList<String> list = new ArrayList<String>();
 1)若在使用时没有将泛型E明确一个类型,则java默认将E变成Object
 2)Iterator也支持泛型,但是这个泛型类型必须是其来源的集合的泛型类型,不能自己随便定义
 3)我们自己也可以定义泛型,而且泛型类型可以定义多个。
 eg:public class TestPoint<E,Y> {......
 4)泛型不能是基础类型,必须是包装类或者其他类

LinkedList类
 使用方法与ArrayList一模一样,只是内部实现不同,在使用时权衡后选择使用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值