Java学习笔记(2015.7.27~7.31)

Java学习笔记(2015.7.27~7.31)

Java 课堂


  • Java学习笔记(2015.7.27~7.31)

    • 小技巧
    • 常用方法
    • 1、List另一个子类--LinkedList
    • 2、数组的常用方法
    • 3、排序
    • 1、二分法查找
    • 2、数组转换为List
    • 3、可变参数Type ... param (了解)
    • 1、容器Collection
    • 2、自动拆装箱(了解)
    • 3、JDK增强for循环(了解)
    • 4、泛型(掌握)
    • 5、iterator与for在迭代中的区别
    • 1、概念:保存多个对象的对象。
    • 2、JDk为什么提供容器
    • 3、API
    • 4、容器的功能
    • 5、Collection接口常用方法
    • 6、容器之间的操作(了解)
    • 7、List的特点
    • 8、Set的特点
    • 9、ArrayList的自动增加或减少元素的策略(了解)
    • 10、Map(了解)
    • 11、迭代
    • 1、整形
    • 2、数值的转换
    • 3、程序的机构
    • 4、方法重写的常见问题
    • Day16
    • Day18
    • Day19
    • 周末作业

Day16

(复习)

1、整形

数据的基本单位是bit(位)。

类型 bit Kb 范围
byte 8位 1字节 -128~127(2^8)
short 16位 2字节 -32768~32767(2^16)
int 32位 4字节 很大,略
long 64位 8字节 灰常大,略

2、数值的转换

char通过ASCII(英语发音/ski/)转成int,应用较多。

3、程序的机构

顺序
分支
循环

4、方法重写的常见问题

  • Duplicate method study() in type Student class
    方法重复了
  • The constructor Student() is undefined
    构造方法 未定义
  • Constructor call must be the first statement in a constructor
    this()调用重载(Overload)构造方法必须在第一行
  • The static field Chinese.guoji should be  
    accessed in a static way
    静态调用静态

Day18

1、容器Collection

1、概念:保存多个对象的对象。

2、JDk为什么提供容器

几乎所有程序员都需要的功能

3、API

应用程序接口 Application Programming Interface

4、容器的功能

  • 与数组相同
  • 自动增加或减小容器的长度

5、Collection接口常用方法

  • int size();
  • boolean isEmpty();
  • void clear();
  • boolean contains(Object element);要用到equals
  • boolean add(Object element);
  • boolean remove(Object element);

6、容器之间的操作(了解)

  • boolean cotainsAll(Collection c);
  • boolean addAdd(Collection c);
  • boolean removeAll(Collection c);
  • boolean retainAll(Collection c);求交集

7、List的特点

  • 按照保存顺序存放
  • 元素可以重复

8、Set的特点

  • 不按照保存顺序存放,按照自己的特定顺序
  • HashSet内部元素排序按照HashCode值
  • 元素不可以洪福

9、ArrayList的自动增加或减少元素的策略(了解)

ArrayList的内部实现使用了数组,如果元素个数小于10,数组大小为10,如果大于10,则为原长度+原长度的一半

10、Map(了解)

  • 保存键值对形式的数据
  • 例如:学号和学生姓名
  • 保存元素时,如果key相同,值会被覆盖
  • key是唯一的,不允许重复

11、迭代

  • 每个容器都实现了Iterator接口
  • 仅有三个方法:
    • boolean hasNext();
    • Object next();
    • void remove();
  • 迭代代码片段:
Iterator itr = c.iterator();while(itr.hasNext()) {    itr.next();}

2、自动拆装箱(了解)

AutoBoxing/AutoUnBoxing

基本类型 封装类型
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
  • 字符包装类判断是否是数字或字母
boolean digit = Character.isDigit(‘4‘);
System.out.println(digit);
boolean letter = Character.isLetter(‘!‘);
System.out.println(letter);

3、JDK增强for循环(了解)

for(Object str: list) {    
    System.out.println(str);
}
for(int i = 0; i<list.size();i++) {
    String str = (String) list.get(i);    
    System.out.println(str);
}

4、泛型(掌握)

  • 保证类型安全
  • 获取数据时不需要类型强制转换
List<String> list = new ArrayList<String>();list.add("aaa");list.add(12);//错误,类型不符

5、iterator与for在迭代中的区别

  • Iterator做迭代时,迭代的对象有且只有一次;
  • for则没有这个开始,重复几次都可以。

Day19

1、List另一个子类--LinkedList

  • 存储性能
子类
ArrayList
LinkedList
  • 物理结构,ArrayList的底层是数组,LinkedList的底层是链表。

    • 数组:元素个数固定,空间连续
    • 链表:元素个数不固定,空间不连续
  • 功能角度:队列(堆),栈,树(了解)
    • 队列:普通模式,先进先出(First in First out)
    • 栈:后进先出,***夹模式(Last in First Out)
    • 树:有序二叉树,在一个分支中,左边的节点最小,右边的节点最大。
    • push:压入栈中
    • pop:讲栈顶部的元素弹出(最后进来的推出去)
  • ArrayList为什么有两个remove方法?
    答:remove(object o)是Collection都有的,remove(int index)是子类新添加的,因为ArrayList是基于数组实现的,所以才有了下标。

2、数组的常用方法

1、二分法查找

前提:数组必须是有序的

Arrays.binarySearch(arrays,key)

2、数组转换为List

List asList = Arrays。asList(1,2,3,4,5);

3、可变参数Type ... param (了解)

可变参数是以数组的方式实现的,所以不能同时存在以数组作为形参的方法重写。

3、排序

思路:

  • 使当前的类实现Comparable接口,增加可以与其他同类对象比较的能力
class Student implements Comparable<Student> {
    private int id;    
    private String name;    
    public int compareTo(Student o) {
            return this.id - o.id;    
    }
}
  • 找其他具备比较能力的对象来比较
    1、创建一个类,实现Comparator接口,用来比较每两个Student的大小,排序时传入自定义的Comparator对象。
class StudentComparator implements Comparator<Student>{
    public int compare(Student o1, Student o2) {        
        return o1.id - o2.id;    
    }
}
……
Comparator<Student> comparator = new StudentComparator();
Collections.sort(list,comparator);

周末作业

小技巧

将字符转为数字
例如将‘1‘转为整形1

int a = Integer.valueOf(‘1‘+"")

这样才能顺利转成1

常用方法

  • charAt() 字符串的方法
    字符串名.charAt(index) 将字符串中的字符取出
  • Collections.frequency(Collection c, Object o)
    返回指定 collection 中等于指定对象的元素数。
时间: 2024-07-29 16:28:32

Java学习笔记(2015.7.27~7.31)的相关文章

Java 学习笔记(2015.7.13~17)

Java 学习笔记(2015.7.13~17) Java this关键字 表示本类中的属性,调用本类中的方法 class Person {        private String name;         private int age;         public Person(String name, int age) {         this.name = name;//调用本类中的属性         this.age = age;//同上} //get&set方法:    

Java 学习笔记(2015.7.20~24)

Java 学习笔记(2015.7.20~24) Java Java 学习笔记(2015.7.20~24) 1.StringBuffer与StringBuilder的区别: 2.基本数据类型包装类 3.Date.Calendar.DateFormat等与时间相关的类 1.常用类String 2.正则表达式 3.常用类 StringBuffer 代表可变的字符序列 拆箱与装箱 包装类的应用 匿名内部类 数组 day11 day12 day13 day14 day11 父类中使用public定义的方法

java学习笔记3——java关键字

java学习笔记3——java关键字 虽然老师说不用刻意的去记忆,但是我还是在网上找到了非常详细的注解,再次收藏 关键字的类型表: 各个关键字的详细注解和实例,按首字母排序: 1.abstract abstract 关键字可以修改类或方法. abstract 类可以扩展(增加子类),但不能直接实例化. abstract 方法不在声明它的类中实现,但必须在某个子类中重写. -示例- public abstract class MyClass{ } public abstract String my

【Java学习笔记之二十六】深入理解Java匿名内部类

在[Java学习笔记之二十五]初步认知Java内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节问题,所以就衍生出这篇博客.在这篇博客中你可以了解到匿名内部类的使用.匿名内部类要注意的事项.如何初始化匿名内部类.匿名内部类使用的形参为何要为final. 一.使用匿名内部类内部类 匿名内部类由于没有名字,所以它的创建方式有点儿奇怪.创建格式如下: new 父类构造器(参数列表)|实现接口() { //匿名内部类的类体部分 } 在这里我们看到使用匿名内部类我们必须要继承一个父类或者

Java学习笔记之继承

一.继承的基础 在Java术语中,被继承的类叫超类(superclass),继承超类的类叫子类(subclass). 举例说明: 1 class Box 2 { 3 public double width; 4 public double height; 5 public double depth; 6 7 //重载构造方法 8 public Box(Box ob) 9 { 10 width = ob.width; 11 height = ob.height; 12 depth = ob.dep

Java学习笔记之接口

一.接口的概念与定义 首先考虑一个简单的接口的定义: public interface Output { int MAX_LINE = 40; void out(); void getData(String msg); } 定义接口使用关键字interface 修饰符interface前面的public可以省略,如果省略,则采用默认访问控制,即只有在相同包结构的代码才可以访问此接口 接口不可以有构造方法(区别于类中的构造方法) 接口里面的所有成员,包括常量.方法等都是public访问权限,所以在

Java学习笔记之方法重载,动态方法调度和抽象类

一.方法重载 如果子类中的方法与它的超类中的方法有相同的方法名,则称子类中的方法重载超类中的方法,特别是当超类和子类中的方法名和参数类型都相同时,在子类中调用该方法时,超类中的方法会被隐藏.考虑下面程序: 1 class A 2 { 3 int i, j; 4 A(int a, int b) 5 { 6 i = a; 7 j = b; 8 } 9 10 // display i and j 11 void show() 12 { 13 System.out.println("i and j: &

Java学习笔记——动态代理

所谓动态,也就是说这个东西是可变的,或者说不是一生下来就有的.提到动态就不得不说静态,静态代理,个人觉得是指一个代理在程序中是事先写好的,不能变的,就像上一篇"Java学习笔记--RMI"中的远程代理,其中客户端服务对象就是一个远程服务对象的代理,这个代理可以使得客户在操作时感觉像在操作本地对象一样,远程对象对于客户是透明的.我们可以看出这里的远程代理,是在程序中事先写好的,而本节我们要讨论的远程代理,是由JVM根据反射机制,在程序运行时动态生成的.(以上是本人的理解,如果有不正确的地

java学习笔记13--比较器(Comparable、Comparator)

java学习笔记13--比较器(Comparable.Comparator) 分类: JAVA 2013-05-20 23:20 3296人阅读 评论(0) 收藏 举报 Comparable接口的作用 之前Arrays类中存在sort()方法,此方法可以直接对对象数组进行排序. Comparable接口 可以直接使用java.util.Arrays类进行数组的排序操作,但对象所在的类必须实现Comparable接口,用于指定排序接口. Comparable接口的定义如下: public  int