Java补习笔记

来源:互联网 发布:光谷有什么好吃的 知乎 编辑:程序博客网 时间:2024/04/27 22:36

2016年最新Java学习资源路线图(附完整视频资源),Java学习路线,Java培训,Java视频,Java自学 | 黑马程序员官网

Java学习路线图

这里写图片描述

Java 基础:

面向对象(Static的内存图解)

这里写图片描述

静态Static

关键字的特点以及注意事项:
这里写图片描述


静态成员对比成员变量

这里写图片描述

集合类的使用建议:

这里写图片描述

流转换为字符类型的工具类:

import java.io.ByteArrayOutputStream;import java.io.InputStream;public class StreamTools {    //把一个inputStream 转换成一个String     public static String readStream(InputStream in) throws Exception{        //定义一个内存输出流        ByteArrayOutputStream baos = new ByteArrayOutputStream();        int len = -1;        byte[] buffer = new byte[1024]; //1kb        while((len=in.read(buffer))!=-1){            baos.write(buffer, 0, len);        }        in.close();        String content = new String(baos.toByteArray());        return content;    }}


截取字符-substring

//获取文件名字pick.exe: String path = "http://192.168.1.139:8080/pick.exe";    private static String getFilename(String path){         //不加1的话,截取的字符串是从"/"开始的        int start = path.lastIndexOf("/")+1;        String filename=path.substring(start);        return filename;    //  return path.substring(path.lastIndexOf("/")+1);    }


final类型的用法:

内部类成员访问外部类成员,需要把该成员变成final类型
这里写图片描述

map类取出数据:

例子:

Map<String, String> map = new HashMap<String, String>();// Map map = new LinkedHashMap();// 向map中添加键值map.put("1", "aaa");map.put("2", "bbb");map.put("3", "ccc");// 传统方式1Set set = map.keySet(); // 获得map的所有键Iterator iterator = set.iterator(); // 所有的键使用迭代器来装while (iterator.hasNext()) {String key = (String) iterator.next();String value = (String) map.get(key);System.out.println("key:" + key + "value" + value);}//传统方式2Iterator iterator = set.iterator();while (iterator.hasNext()) {Map.Entry entry = (Entry) iterator.next();String key = (String) entry.getKey();String value = (String) entry.getValue();System.out.println(key + "===========" + value);}

传统方式1:
这里写图片描述


传统方式2:
这里写图片描述



Java语法增强:

静态导入:

用于简化程序对类静态属性和方法的调用,但实际开发中应用不多
这里写图片描述


JDK5自动拆箱/装箱:

自动装箱:指开发人员可以把一个基本数据类型直接赋给对应的包装类
自动拆箱:指的是开发人员可以把一个包装类对象直接赋给对应基本数据类型
例子:

List<Integer> list = new ArrayList<Integer>();//创建一个array数组list.add(188);      //向数组添加一个数字188int j=list.get(0);  //向数组取出下标为0的数字


增强for循环:

只能用在数组或实现了Iteratable接口的集合类上
这里写图片描述


可变参数:

可变参数可以把它看成一个数组

这里写图片描述

PS: 可以使用数组来定义的,原理上是一样的

int[] arr={1,2,3,4,5,6};sum(arr);//==sum(1,2,3,4,5,6);


注意事项:

【1】

import org.junit.Test;public class ahha {@Testpublic void TestSum() {    sum(1, 2, 3, 4, 5, 6);}// public void sum(int... nums,int x) { 不可以这样写,无法识别public void sum(int x, int... nums) { // x=1,之后由sum分配}}

【2】asList要的是对象,int是基本类型,Integer是对象

int []nums={1,3,4,5};  //基本类型数组Integer []num={1,3,4,5}; //对象数组

所以改为对象数组就可以了
这里写图片描述

PS:

1.子类在覆盖父类的方法,不能抛出比父类更多的异常
2.字节流可以写任何数据,字符流只可以写字符数据

0 0