JAVA

1只要是字符串,必然就是对象。

2API文档的基本使用

3如何创建字符串:

a直接赋值双引号,也是一个字符串对象。

b可以通过new关键字来调用String的构造方法

public String(char[] array)根据字符数组来创建字符串

public String(char[] array,int offset,intcount):根据字符数组当中一部分来创建字符串

4字符串池:为了节省内存,重复利用相同的字符串。

FileWriter

/*

* 如果需要将数据写到纯文本文件中,那么可以使用FileWriter类

*

* 1导包

* import java.io.FileWriter;

*

* 2创建,构造方法

* public FileWriter(String fileName);参数字符串就是文件的路径名称

* FileWriter fw = new FileWriter("file01.txt");

* 文件扩展名只能决定默认用什么软件打开文件,不能决定其内容

*

* 3使用成员方法

* 写数据  public void  write(String str) 参数就是需要写到文件中的字符串

* 关闭流  public void close();   关闭释放资源

*

* 总结一下:  FileWriter基本使用步骤  创  写  关

*

*

* 注意:1注意第三步 2创建的时候提示有异常,那么就悬停,然后点击Add throws...即可

*/

案例

//需要将字符串转换成一个Hero对象

//首先将一个完整的字符串切分成若干个小段

String[] array = line.split(",");

String name = array[0];//姓名

//如何将字符串类型"100"转化成int 100

int attack = Integer.parseInt(array[1]);//攻击力

String type = array[2];//类型

//根据三条信息创建一个英雄对象

Hero hero = new Hero(name,attack,type);

list.add(hero);//添加到集合当中

写  BufferedWriter br = new BufferedWriter(new FileWriter("friends.txt"));

读  BufferedReader br = new BufferedReader(new FileReader("friends.txt"));

Lambda表达式

method((a,b) ->a + b);

//调用方法的时候,参数类型是函数式接口,所以Lambda可以判断出是哪个接口

Lambda表达式  (a,b) ->a + b

method方法需要一个Calculator接口类型参数

Lambda表达式就是充当了Calculator接口类型的参数

1 Lambda表达式前面的小括号,其实就是接口抽象方法的小括号。

2 箭头代表拿着小括号的数据做什么事情,是一个指向动作

3 箭头后面代表拿到了参数之后做什么事情

Lambda表达式的语义本身代表了怎么做这件事,没有对象的概念在里面(更加简单直观)

* java当中使用Lambda表达式的前提是:必须有"函数接口"

* 概念:有且仅有一个抽象方法的接口,叫做函数式接口"

* 如何才能万无一失的检测一下当前的接口是不是函数式接口:

* 用一个固定的格式写在public interface之前一行即可:

*  @FunctionalInterface

*  public interface 函数接口名{

*  }

public static void method(Calculator calculator) {

int result = calculator.sum(20,10);

System.out.println("结果是:" + result);

}

public static void main(String[] args) {

method((a,b) ->a + b);

}

* Lambda表达式要想使用,一定有函数接口的推断环境

* 1 要么通过方法的参数类型来确定是哪个函数接口

* 2 要么通过赋值操作来确定是哪个函数式接口

*

* Lambda的格式就是为了将抽象方法,翻译成以下三点

* 1 一些参数(方法参数)

* 2 一些箭头

* 3 一些代码(方法体)

*

* 例如抽象方法

* public abstract int(int a,int b);

* 翻译成Lambda

* (a,b) -> {return a + b;}

//在Lambda表达式中凡是可以推到的都是可以省略的

//全的   method(  (int x) -> {return x++;}  );

//1 Lambda表达式中参数类型可以不写      method(   (x) -> {return x++;}   )

//2 如果参数只有一个那么小括号可以省略   method(  x -> {return x++};   )

//3 如果语句只有一个,那么大括号和return也可以省略  method(   x -> x++);

//方法引用

hirSitter(  food -> System.out.println("将" + food + "做成可口的食物")   );

hirSitter(    Cook::makeFood  );

* System.out其实就是一个JDk当中已经创建好的对象而println及时system.out 对象当中的成员方法

*

* 使用方法引用更简单

* 对象名::成员方法名  System.out::println

public static void main(String[] args) {

//首次使用Lambda  间接调用println方法

useMonitor((String str) -> {System.out.println(str);});

//使用方法引用直接交给了println

useMonitor(System.out::println);

/*

* 小结:

* 1 一定要有函数式接口,才能使用Lambda

* 2 对于重复的Lambda场景,可以使用方法引用来进行简化

*/

}

public static  void useMonitor(Monitor monitor) {

monitor.show("Hello");

}

Stream流    流式思想

* 题目:

* 有一个集合里面存放的字符串, 样如:"赵丽颖,98","鹿晗,90","宋小宝,87"。。。。。

* 要求打印输出所有成绩当中大于90分的数字

*

* 1 分析定义一个集合ArrayList,存入指定格式的若干个字符串。

*2 我们只想要逗号后面的,那么就要分割字符串:split,然后取结果当中的1号元素

*3 根据字符串切割出来的"98" 仍然是一个String 需要需要转换成int才能比较大小Inter.ParseInt静态方法

*4 判断转换后的int是否大于90  筛选

*5 筛选之后的最终进行打印输出

//Stream API更优写法 题目简便答案

recorList.stream().map(s ->s.split(",")[1]).map(Integer::parseInt)

.filter(n -> n>90).forEach(System.out::println);

二获取流

* Java8中的"流",其实就是Steam接口的对象

* JDK提供了一个接口:java.util.stream.Stream<T>  底层比集合还要高等

*

* 如何获取流

* 1 根据集合获取流  集合名称.stream();

* 2 根据数组获取流   Stream.of(数组名称);//根据接口获取流

ArrayList<String> list = new ArrayList<>();

list.add("迪丽热巴");

list.add("古力娜扎");

list.add("马尔扎哈");

Stream<String> streamA = list.stream();

//根据数组获取流     数组当中的元素必须是    引用类型才行

String[] arrayStr = {"hello","world","Java"};

Stream<String> streamB = Stream.of(arrayStr);

Integer[] arrayInteger = {10,20,30};

Stream<Integer> streamc = Stream.of(arrayInteger);

三map映射

//获取流之后,可以使用映射方法:map(用于Lambda表达式)

/*

* 映射:就是将一个对象转换成另一个对象,把老对象映射到新对象上。

* "赵丽颖,98"转换成  "98"  将一个长字符串转换成短的字符串

* "98"转换98  将一个字符串转换成一个int数字

* map方法它的参数是函数是接口的Lambda表达式

*/

ArrayList<String> list = new ArrayList<>();

list.add("100");

list.add("120");

list.add("135");

list.add("143");

Stream<Integer> streamA = list.stream().map((String str)->{

int num = Integer.parseInt(str);return num;});

Stream<Integer> streamB = list.stream().map((str)->{

int num = Integer.parseInt(str);return num;});

Stream<Integer> streamC = list.stream().map((String str)->{

return Integer.parseInt(str);});

Stream<Integer> streamD = list.stream().map(Integer::parseInt);

ArrayList<String> list2 = new ArrayList<>();

list2.add("赵丽颖,98");

list2.add("李八,99");

list2.add("宋小宝,80");

Stream<String> stream1 =  list2.stream().map((String str) -> {String[] array = str.split(",");

String result = array[1];

return result;});

Stream<String> stream2 =  list2.stream().map((s) -> {String[] array = s.split(",");

String result = array[1];

return result;});

Stream<String> stream3 =  list2.stream().map((s) -> {String[] array = s.split(",");

return array[1];});

Stream<String> stream4 =  list2.stream().map((s) -> {return s.split(",")[1];

});

Stream<String> stream5 =  list2.stream().map((s) ->s.split(",")[1]);

四Filter过滤

/*

* 如果希望对流当中的元素进行过滤,可以使用过滤的方法

* filter(能产生boolean结果的Lambda表达式)   如果Lambda表达式产生了true,则取元素;如果产生了false,则不要元素。

*/

ArrayList<Integer> list1 = new ArrayList<>();

list1.add(90);

list1.add(85);

list1.add(60);

Stream<Integer> stream1 = list1.stream().filter((Integer num) ->{

boolean b= num>80;

return b;

});

Stream<Integer> stream2 = list1.stream().filter((num) ->{

boolean b= num>80;

return b;

});

Stream<Integer> stream3 = list1.stream().filter(num ->{

return num>80;

});

Stream<Integer> stream4 = list1.stream().filter(num ->num>80

);

ArrayList<String> list2  = new ArrayList<>();

list2.add("赵丽颖");

list2.add("赵丽颖");

list2.add("宋小宝");

Stream<String> streamA = list2.stream().filter((String str) -> {

//boolean b = "赵丽颖".equals("str");

boolean b = str.equals("赵丽颖");

return b;

});

Stream<String> streamB = list2.stream().filter(s -> {

boolean b = s.equals("赵丽颖");

return b;

});

Stream<String> streamC = list2.stream().filter(s -> {

return s.equals("赵丽颖");

});

Stream<String> streamD = list2.stream().filter(s -> s.equals("赵丽颖"));

五forEach

/*

* 遍历:如果需要再流当中进行元素的遍历,可以使用forEach方法:

* forEach(Lambda表达式)  意思是,对流当中每一个元素到要进行操作

* 参数的Lambda表达式必须是能够消费一个参数,而且不产生数据结果的Lambda。

* 例如打印输出

* 例如  Lambda:  s -> System.out.println(s);

*   方法引用: System::println;

*/

ArrayList<String> list = new ArrayList<>();

list.add("迪丽热巴");

list.add("古力娜扎");

list.add("马尔扎哈");

Stream<String> streamA = list.stream();

streamA.forEach((String str) -> {System.out.println(str);});

list.stream().forEach((String str) -> {System.out.println(str);});

list.stream().forEach(s -> {System.out.println(s);});

list.stream().forEach(System.out::println);

六并发流

/*

* 若果流当中元素特别多, 那么只有一个人在逐一、挨个处理,肯定比较慢,费劲

* 如果对流当中的元素,使用多个人同时处理,这就是"并发"

* 如何获取“并发流”(支持并发操作的流)

* .parallelStream()

* 注意事项

* 1 使用并发流操作的时候,到底有几个人同时进行操作呢?不用管,JDK自己处理。(Frok/Join框架)

* 2 正确使用,就不会出现多个人抢到同一个元素的情况。

* 3 如果已经获取一个普通流,那么只要在调用一下parlle方法也会变成并发流。

*/

ArrayList<String> list = new ArrayList<>();

for(int i = 0;i<=100;i++) {

System.out.println("Hello-" + i);

}

//这是只有一个人在做打印操作

//list.stream().forEach(System.out::println);

//获取一个并发流

//list.parallelStream().forEach(System.out::println);

//如果已经获取一个普通流,那么只要在调用一下parallel方法也会变成并发流。

list.stream().parallel().forEach(System.out::println);

模块化

module demo{

//如果有其他模块依赖我,那么其他模块下面的三个包可以访问(导出包)

exports  com.xin.Test;

exports  com.xin.Pojo;.

exports  com.xin.Qita;

//我需要依赖其他模块,

requires  book;

//有机项目名称   Build  path à Configure Build Path   在Project    第一项  Modulepath  Add       用那个模块√哪个

}

java随堂笔记的更多相关文章

  1. Java随堂笔记一

    今天开始了Java的正式复习,因为有两三年没有接触Java了,所以打算开始从头复习. 下面使课堂的一些随堂笔记,如果有遗忘,我可以随时翻阅该博客. public static void main(St ...

  2. Java随堂笔记三

    今天学习了Java运算符的最后一部分 public static void main(String[] args) {        //算数运算符:+ - * / % ++ --        // ...

  3. Java随堂笔记二

    变量常量类型转换和命名规范 变量和常量 static double salary = 2500;​    //属性:变量    //变量作用域:    //类变量 static    // 局部变量 ...

  4. Java基础复习笔记系列 九 网络编程

    Java基础复习笔记系列之 网络编程 学习资料参考: 1.http://www.icoolxue.com/ 2. 1.网络编程的基础概念. TCP/IP协议:Socket编程:IP地址. 中国和美国之 ...

  5. Java基础复习笔记系列 八 多线程编程

    Java基础复习笔记系列之 多线程编程 参考地址: http://blog.csdn.net/xuweilinjijis/article/details/8878649 今天的故事,让我们从上面这个图 ...

  6. Java基础复习笔记系列 七 IO操作

    Java基础复习笔记系列之 IO操作 我们说的出入,都是站在程序的角度来说的.FileInputStream是读入数据.?????? 1.流是什么东西? 这章的理解的关键是:形象思维.一个管道插入了一 ...

  7. Java基础复习笔记系列 五 常用类

    Java基础复习笔记系列之 常用类 1.String类介绍. 首先看类所属的包:java.lang.String类. 再看它的构造方法: 2. String s1 = “hello”: String ...

  8. Java基础复习笔记系列 四 数组

    Java基础复习笔记系列之 数组 1.数组初步介绍? Java中的数组是引用类型,不可以直接分配在栈上.不同于C(在Java中,除了基础数据类型外,所有的类型都是引用类型.) Java中的数组在申明时 ...

  9. 20145213《Java程序设计学习笔记》第六周学习总结

    20145213<Java程序设计学习笔记>第六周学习总结 说在前面的话 上篇博客中娄老师指出我因为数据结构基础薄弱,才导致对第九章内容浅尝遏止地认知.在这里我还要自我批评一下,其实我事后 ...

随机推荐

  1. 关于python浮点数精度问题计算误差的原因分析

    在python中使用浮点数运算可能会出现如下问题 a = 0.1+0.2print(a) 输出的结果是 0.30000000000000004 原因如下: 出现上面的情况,主要还是因浮点数在计算机中实 ...

  2. MySQL深入研究--学习总结(5)

    前言 接上文,继续学习后续章节.细心的同学已经发现,我整理的并不一定是作者讲的内容,更多是结合自己的理解,加以阐述,所以建议结合原文一起理解. 第20章<幻读是什么,幻读有什么问题?> 先 ...

  3. Tomcat详解系列(1) - 如何设计一个简单的web容器

    Tomcat - 如何设计一个简单的web容器 在学习Tomcat前,很多人先入为主的对它的认知是巨复杂的:所以第一步,在学习它之前,要打破这种观念,我们通过学习如何设计一个最基本的web容器来看它需 ...

  4. 想了解FlinkX-Oracle Logminer?那就不要错过这篇文章

    FlinkX-Oracle Logminer模块是FlinkX基于Logminer对Oracle重做日志进行实时采集分析,可对Oracle进行实时同步也可以通过指定SCN或者时间戳从某个节点进行同步, ...

  5. Mybatis日志源码探究

    一.项目搭建 1.pom.xml <dependencies> <dependency> <groupId>log4j</groupId> <ar ...

  6. LevelDB 源码解析之 Random 随机数

    GitHub: https://github.com/storagezhang Emai: debugzhang@163.com 华为云社区: https://bbs.huaweicloud.com/ ...

  7. .NET 开源配置组件 AgileConfig 初体验

    介绍 在微服务大行其道的今天,系统会被拆分成多个模块,作为单独的服务运行,同时为了集中化管理,我们还需要日志中心,配置中心等,很多开发人员可能更熟悉 ApolloConfig,这个组件功能也很完善,d ...

  8. 【观隅】数据集管理与可视化平台-NABCD分析

    项目 内容 这个作业属于哪个课程 2021春季软件工程(罗杰 任健) 这个作业的要求在哪里 团队项目-初次邂逅,需求分析 项目介绍 观隅 数据集管理与可视化平台(取"观一隅而知全局" ...

  9. 跟我一起学Go系列:从写测试用例开始仗剑走天涯

    从入门到深入 Go 我们已经走了很长的路,当你想启动多个测试类的时候你是不是想启动多个 main 方法,但是 Go 限制了在同一个 package 下只能有一个 main,所以这条路你是走不通的.那我 ...

  10. Android+Spring Boot 选择+上传+下载文件

    2021.02.03更新 1 概述 前端Android,上传与下载文件,使用OkHttp处理请求,后端使用Spring Boot,处理Android发送来的上传与下载请求.这个其实不难,就是特别多奇奇 ...