Java入门之基础语法碎片知识汇总
Back to beginning
有一段时间没写博客了,主要是工作比较忙,平常的总结一般都记录在笔记软件里了,没有公开汇总。最近因为工作变动(从前端转去做数据开发,当然前端也不会放弃),为了方便自己快速上手Java,所以决定回到最开始学习前端的状态,抽时间写写博客。一来为了梳理知识(主要写一些自己掌握得不太好或者需要重点关注的),二来为了加强记忆。
正文
1. 基本的数据类型
作为一个前端工程师,主要使用的语言是JavaScript,这是一门动态的弱类型语言。当我们学习Java这种强类型的静态语言,首先最头疼的就是需要区分定义各种不同的类型。int or Integer ? float or double ? array or ArrayList? 我在和后端吐槽Java这一点的时候,后端这样跟我打趣道:“用JS先爽后痛苦,用Java是先痛苦后爽”,听完这个我暂时能勉为其难的理解一下Java的“啰嗦”了。那我就来先“痛苦”一下,了解Java的数据类型,如下图所示:
数据类型.png
作为一个有过语言学习经验的人,这些简单的数据类型应该不难理解,定义之前稍作思考,一般问题不大,只是这个变化还需习惯一下。
2. 循环和控制语句
这里主要想说说Java的一个玩意儿(语法糖)——增强循环。
for(T iterator: Collection<T>) {}
// T: 元素类型
// Collection:数组名/Iterator实例
这种for循环是怎么执行的?
对于数组,这种语法糖实际上还是用的普通的 for 循环
对于集合,这种语法糖实际上是用的 iterator 迭代器迭代
优点:
(1)优点: 使用更方便简洁
缺点:
(1)对于数组来说,不能通过下标值访问指定的元素,不便于进行复杂的循环
(2)“对于集合来说,与使用Interator相比,不能方便的删除集合中的内容(在内部也是调用Interator)”,这一点我是阅读资料看到的,通过我实际工作中的使用经验,我的理解是:比如当前循环到 array[1], 我们在循环体中使用完以后array[1],不能在后面写remove.array[1]。
结论:
除了简单遍历之外,例如:只需读取,不建议使用增强的for循环。
3. Java类型模型
类:是一个模板,定义一类对象的行为和状态,一个类可以对应多个对象,多个方法。
对象:一个类的实例,有具体的状态
4. Java⽅法和成员变量
静态方法: 隶属于类本身的方法,多个对象可以共享,最好用类的名字调用
一个方法由方法名和参数类型决定 (这句话很重要)
那么相同⽅法名,不同参数类型,就是平常说的重载(override)了,这里并不需要特地去记重载、重写这种抽象的概念,我们只需要具体到去区分方法的每个部分的组成就行了。
5. 修饰符
修饰符主要用来控制变量、类 的作⽤域和⼀些访问权限。不需要特地记,忘了就查一下,写多了就熟悉了。
Screen Shot 2018-08-26 at 17.58.11.png
具体说一下static和final
static:具有static修饰的⽅法和变量的类, 我们称之为”静态类”
final:用final修饰的成员变量必须在声明时初始化,或者在构造方法里面初始化。
final <类>; —> 防⽌类被继承
final <变量>; —> 防⽌变量被修改引⽤到另外⼀个对象, 可称为 “常量” 。注意:常量指向的对象不能被修改。例如:
final Human human = New Human(name: "chiang");
human = new Human("chiang2") // 报错
final <⽅法>; —> 防⽌⽅法被重载(override)
6. 常用集合类
这一部分内容主要是api的使用,以下提供官方文档
(1) Number类:
// Integer :https://docs.oracle.com/javase/8/docs/api/?java/lang/Integer.html
Integer a= 5;
Integer b = 6;
Integer sum = a+b;
Integer minus = a - b;
Integer result = a / b;
boolean r = a > b;
Float c = a.floatValue();
Double d = c.doubleValue();
(2) String 类
// https://docs.oracle.com/javase/9/docs/api/java/lang/String.html
String str1 = "hello";
String str2 = "chiang";
int length = str1.length();
boolean test = str1.equals(str2);
char ch = str2.charAt(0) // ch = 'i'
(3) ArrayList类
// https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html
ArrayList<Integer> array = new ArrayList<Integer>();
array.add (1);
Integer a = array.get(0);
Integer size = array.size();
boolean empty = array.isEmpty();
(4) HashMap 类
// https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html
HashMap<String, Integer> ageOfPerson = new HashMap<String, Integer>();
ageOfPerson.put("chiang", 18);
ageOfPerson.put("zoic", 17);
Integer age = ageOfPerson.get("chiang");
boolean contains = ageOfPerson.containsKey("chiang")