new ArrayList<>() 和 new ArrayList<String>() 区别

具体讲是下面两句的区别

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

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

<> 内加不加类型都行吗?

左边指定了泛型右边可省略
你图中的写法二者没区别
如果你问的是

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

的区别的话
<>内指的是泛型,代表这个数组内的所有对象都是这个类型的
这样我们用增强for可以直接作为你写的泛型的对象使用

for(String item: list) {
}

第二种声明可以直接这样取出使用,而第一种只能作为Object取出再自行转换类型

可以的。左边决定就行了。