参赛话题:​​学习笔记​

学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路。学习之乐,独乐乐,不如众乐乐,把知识讲给更多的人听,何乐而不为呢?
你可以从以下几个方面着手(不强制),或者根据自己对话题主题的理解创作,参考如下:

Java JDK8 新特性Lambda表达式使用

在实际开发中,我们使用Lambda表达式可以提高代码开发效率,代码进一步简洁的作用,功能也强大,时间复杂度不一定减少了。

1创建一个线程并启动它

public class LamadaTest{
public static void main(String[] args) {
new Thread(() -> System.out.println("fdfsdf")).start();
}
}

2 语法规则:

(parameter-list) -> {}

lambda表达式由原有的演变而来

return new MethodInterceptor() {
@Override
public Object invoke(MethodInvocation invocation) throwd Throwable {
Object result = invocation.proceed();
return result;
}

}

------>

return invocation -> {
Object result = invocation.proceed();
return result;

}

3 Lambda 和 this 关键字

Lambda 表达式主体内使用的 this 关键字和其所在的类实例相同。

4 企业常用

brandExistGeohash = brandPois.stream().map(PoiResponseItem::getGeohash).collect(Collectors.toSet());
List<LngLatData> brandLags = brandPois.stream().map(this::parsePoiRespItem).collect(Collectors.toList());

java8 stream().map().collect()用法直通车java8 stream().map().collect()用法

有一个集合:

List users = getList(); //从数据库查询的用户集合

现在想获取User的身份证号码;在后续的逻辑处理中要用;

常用的方法我们大家都知道,用for循环,

List idcards=new ArrayList();//定义一个集合来装身份证号码

for(int i=0;i<users.size();i++){

idcards.add(users.get(i).getIdcard());

}

这种方法要写好几行代码,有没有简单点的,有,java8 API能一行搞定:

List idcards= users.stream().map(User::getIdcard).collect(Collectors.toList())

解释下一这行代码:

users:一个实体类的集合,类型为List
User:实体类
getIdcard:实体类中的get方法,为获取User的idcard

stream()优点

无存储。stream不是一种数据结构,它只是某种数据源的一个视图,数据源可以是一个数组,Java容器或I/O channel等。
为函数式编程而生。对stream的任何修改都不会修改背后的数据源,比如对stream执行过滤操作并不会删除被过滤的元素,而是会产生一个不包含被过滤元素的新stream。
惰式执行。stream上的操作并不会立即执行,只有等到用户真正需要结果的时候才会执行。
可消费性。stream只能被“消费”一次,一旦遍历过就会失效,就像容器的迭代器那样,想要再次遍历必须重新生成。
stream().map()方法的使用示例:

再看几个例子:数组字母小写变大写
List list= Arrays.asList(“a”, “b”, “c”, “d”);

List collect =list.stream().map(String::toUpperCase).collect(Collectors.toList());
System.out.println(collect); //[A, B, C, D]

数组所有元素,按某种规律计算:
List num = Arrays.asList(1,2,3,4,5);
List collect1 = num.stream().map(n -> n * 2).collect(Collectors.toList());
System.out.println(collect1); //[2, 4, 6, 8, 10]

Java特性和Java方法命名、servlet运行过程


一、Java3大特性:继承、多态、封装
一定要说第四大特性的话为:抽象(abstract,不能被实例化,构造方法 和 static 方法不能是抽象的)
1、继承 extends
子类继承父类的方法,子类增加方法或重写父类的方法,从而产生新的方法。
一个子类只能有一个父类,Java是单继承的。
一个父类可以有多个子类,多个之类继承父类的特性。最高级的父类(超类,基类)为object。
子类不能继承父类中访问权限为 private 的成员变量和方法,也不能继承父类的构造方法。子类可以重写父类的方法,及命名与父类同名的成员变量。

2、多态
1 继承中子类的不同形态体现了多态,重载和重写都实现了多态,而继承就是子类重写。
2 接口也可以实现多态,是第二种方式。接口是多继承多实现,能够对外提供一致的服务接口,使用起来较方便或灵活。

3、封装
隐藏对象的属性和实现细节,仅对外公开访问方法。使用者不要了解实现的具体细节。只要通过对外公开的访问方法,来使用类的成员。
目的:提高安全性及编码的简化性

二、Java方法命名

1) 获取单个对象的方法用 get 做前缀。
2) 获取多个对象的方法用 list 做前缀。
3) 获取统计值的方法用 count 做前缀。
4) 插入的方法用 save/insert 做前缀。
5) 删除的方法用 remove/delete 做前缀。
6) 修改的方法用 update 做前缀。

servlet运行过程

Java JDK8 新特性Lambda表达式使用、Java特性和Java方法命名、servlet运_java

request.getSession().setAttribute和request.getSession().getAttribute()就是分别对session对象赋值和得到对象属性的值。

108.jsp的九大内置对象,四大域对象
4、jsp的九大内置对象

request 请求对象

response 响应对象

pageContext jsp的上下文对象

session 会话对象

application ServletContext对象

config ServletConfig对象

out jsp输出流对象

page 指向当前jsp的对象

exception 异常对象

其中pageContext、request、session、application是四大域对象

什么是域对象?可以向Map一样存取数据的对象。

使用顺序:从小范围用起 pageContext–request–session–application

范围

pageContext (PageContextImpl类) 当前jsp页面内有效

request (HttpServletRequest类) 一次请求内有效

session (httpSession类) 一个会话范围内有效(打开浏览器知道关闭就是一个会话)

application (ServletContext类) 只要web工程不停,整个web工程都有效


构造方法是什么?怎么使用? 构造器是什么? 构造方法与方法的区别?


给对应对象初始化。

1、构造方法时一种特殊的方法,作用:给对应对象初始化。
特殊在哪?
1 构造函数的函数名与类名一致。2 默认构造函数没有参数,没有返回值。构造函数在函数体内也没有内容。不能声明void,访问权限可以为任意,但是一般情况下使用public方法权限,构造方法中的参数可以根据需要自行定义,参数的不同的构造方法构成重载。

public class B extends A { public B(){} //无参的公有构造方法 public B(int i){} //参数类型为int的公有构造方法 public B(int i,double j,char f){} //参数类型为int和double,char的公有构造方法 … }

2、构造方法使用
1 new一个对象,直接调用
Demo demo = new Demo();
2 用this或super关键字public Demo(){

this(13); //这里调用参数为int类型的本类的构造方法

}public Demo(){

super(1); //调用参数为int类型的父类的构造方法

}

—》this或super调用构造方法只能出现在构造方法中,而且必须出现在第一行,所以一个构造方法中第一行只能为this或super调用构造方法,两者不能同时调用构造方法出现,而且注意this或super调用构造方法时,要留构造方法出口,意思就是最后调用的构造方法中没有再调用别的构造方法!

3、构造器是什么?
构造器就是和类名相同但无返回类型的方法
—》构造方法—》构造器通常也叫构造方法、构造函数

另外不能被static、final、synchronized、abstract和native修饰。构造方法不能被子类继承

所以它与方法的区别全部写在上面了。
4、构造方法与方法的区别?1 构造方法的名字必须与定义他的类名完全相同,没有返回类型,甚至连void也没有。

2 构造方法的调用是在创建一个对象时使用new操作进行的。构造方法的作用是初始化对象。

3 不能被static、final、synchronized、abstract和native修饰。构造方法不能被子类继承。