目录
黎明初晓,晨曦微露,清风扶云,墨香袅袅;起始新程云雾散,岁月待书锦绣章。那年十八,初始加瓦,未闻秋雨,只得春风。
倘若我能星月落,骄阳升,风华再少年,我还会选择学java,因为Java是这个世界上最好的语言.py。
一、基础语法🌸
1.注释😲
学基础,先学注释,为什么,因为写代码,写多了,你自己都不知道你自己写的是啥
/*多行注释可以嵌套单行注释,但不能嵌套多行注释(应该没人会闲的测试这玩意)*/
2.分号与块
分号是一句话的结尾,大括号可以是一段话或一句话或空白的结尾。
代码都是以分号作为结尾;😎
{ 块是指以左括号和右括号为边界的语句集合;}😎
🔥🔥🔥类的声明必须使用块,且块可以嵌套
3.标识符
标识符就是为变量、类或方法起的名字:
要以字母、下划线"_"或美元"$"开头(学Java俩月了,没见过$这个东西)。
还记得当初学C的时候,我还懵懂,变量名不是a,就是b,再不就是c,但是现在我会用英文单词来标记了,不是因为我成长了,而是因为一个项目要写的变量方法类太
天幕多了,记不过来,根本记不过来,直接爆炸了🤯
类名:名词,要见名知意,每个单词的首字母要大写。
变量名:名词,小写,驼峰命名(就是多个单词组成的名要第一个单词全小写,第二个单词开始每个单词首字母大写)。
方法名:动名词,小写,名字,依旧是驼峰命名。
4.数据类型
纯个人理解:
基本数据类型是直接把数据存放到栈(zhan)里,随时调用,且固定大小;
引用数据类型是把数据存放到堆里,然后再把堆的地址存放到栈,所以引用数据类型存放的是它的指针(地址)而不是数据本身。
5.变量赋值
比较抽象啊这里,不了解面向对象的建议先看下面,就比如你new出来一个对象,你给他赋值的时候,它发生了:
第一步,他先创造了这个东西,它的所有数值都没有,叫类型初始化;
第二步,他先把在它自己类中自己定义的值赋值给他自己,叫实例变量初始化;
第三步,它将你所赋的值给到他自己,将上一步的值覆盖,叫构造器初始化;
第四步,完活,给他一个地址值,成功成为一个变量。
🙋♂️就比如这是一个学生,在定义他的时候,默认他会学习,多喝水
🤦♂️但是作为一个学生的真实存在,他会了这俩
😊那么,他诞生初始化的时候就会经历:
1.他还是个未经加工的学生
2.他刚成为一个学生,还没有被录入电脑内存,他被要求成这样
3.他被你的代码改成了会这两个行为,将上面的原始行为给覆盖了
4.他成为了一个真正的学生,完成了初始化,并有了他自己的地址,在这个电脑内存中有了他自己的一亩三分地
🥳真是可歌可泣,可喜可贺啊
所以:类型初始化—>实例变量初始化—>构造器初始化—>引用赋值
6.API
何为API,就是你用的系统给你写好的方法。完😪。
7.五种循环
①.普通for循环
②while循环
③do-while循环
④超级for循环(增强for循环)
🔥🔥🔥只有在数组或集合里才能用这玩意
⑤lambda表达式
🔥🔥🔥也是只有在数组或集合里才能用这玩意
二、面向对象🌷
该部分都是我自己的理解,所以写的比较少,建议多看资料,这里是Java的祖宗,每个人理解的都不一样。
1.类🤨
见名知意,就是一类事物的总称,比如:person、student、dog等,它是一个抽象概念。
我们需要找到类的存在,并提取他们共同的属性和行为来构成他们的属性和方法。
类往往由构造器、成员属性和成员方法来组成。
2.对象
对象,就是类中的一个事物,比如:student这个类中有喜欢学习的学生,有喜欢玩原神的学生......
如果想获得这个对象,你需要new 出来一个:
3.测试类
类分为javabean类和测试类,上边那样式的就是javabean类,测试类就是用来测试代码的,new的那步通常是在测试类中。
4.封装
😲 综上所述,类会将自己的属性行为放到自己的类中,然后通过测试类来用,你看不到它内部的代码,就会看起来很简洁。
5. 构造器
构造器就是构造方法, 它是类的一种特殊方法,用于创建对象并进行初始化操作。构造器可以有不同的参数,以便在创建对象时进行个性化的设置。
每个类至少有一个构造器,要是一个没写,就会默认存在一个空参构造。
构造器的主要作用是在创建对象时进行初始化操作:
使用方法一般是在类中定义与类名相同的方法,通过它可以为对象的属性赋初值。在创建对象时,系统会自动调用构造器来完成初始化工作😪。
比如,你可以在构造器中设置一些默认的属性值,或者根据传入的参数来进行个性化的初始化。
6.访问权限
看图就行,default是指什么都没声明,直接就一个class🙆♂️
三、继承和多态🌼
1.继承
类在这里分为子类和父类
比如说,你定义了玩原神的学生YuanPStudent和玩第五人格FiveStudent的学生两个类,在你费劲巴力的敲完一堆代码后,你就会想:
玩原神的学生会吃饭,你敲了一个吃饭的方法,玩第五人格的学生也会吃饭,你又敲了一个吃饭的方法,那我能不能给这两个类中的共同行为提取出来,组成一个Student类,然后我让这两个类继承一下Student类。(专业点的词这叫减少代码冗余)
此时,继承出现了😍.....
看着很难,其实没啥说的,就是子类继承父类,儿子继承他爹的所有的成员属性和成员方法;
切记,java中所有的类都继承于object!!!(object继承于ysj💦💦💦)
2.super关键字
子类不能继承父类的构造方法,可以使用关键字super,而且super必须是构造方法的第一条语句。
3.final关键字
若不希望该类有任何的子类,可以调用final关键字,让它不能被继承。
final还有一个比较大的作用就是定义常量,例如final double PI = 3.14159;
4.static关键字
static 是静态的意思,在 Java 中,用 static 修饰的成员属于类本身,而不是某个具体的对象。静态成员可以通过类名直接访问,并且在类加载时就会被初始化。
5.多态
它指的是同一操作作用于不同的对象,可以产生不同的执行结果。简单来说,就是允许不同类的对象对同一消息作出不同的响应。
不同的对象调用同一个方法可以有不同的逻辑实现,同一对象引用可以指向本类或子类对象。
比如说,Student类继承了person类,你可能会看见这样的代码:
这就运用了多态的性质,切记左边的是父类,要不然就会倒反天罡😬
切记“编译看左,运行看右”,编译时主要关注代码的左边,也就是代码的语法和结构;而运行时则主要关注代码的右边,也就是程序的实际执行和结果。
四、抽象类与接口💮
1.抽象类
如果一个方法没有方法体,他就应该被定义成一个抽象方法,该类被叫做抽象类😲。
抽象类用abstract来修饰;
如果你看到这个东西,那这个方法就是抽象方法,该类就叫做抽象类。
有抽象方法的类一定是抽象类,但抽象类不一定有抽象方法。
子类必须对父类抽象方法进行方法重写。
🔥🔥🔥抽象类不能实例化(不能new 出来)。
2.抽象类的概念
抽象类,但他又不算类,就是一种工具,天生作为父类的存在,将子类的共同特点集于一身,然后给子类用。
因为很确切的知道子类的该方法都不一样,比如同样都是玩,可能一个子类玩王者,一个子类玩原神,一个子类玩蛋仔......所以只需要将这个方法列出来,让子类自己写去玩啥就可以了。
3.接口
接口是一组抽象方法的集合,这些方法没有具体的实现形式;如果一个类实现了某个接口,即继承并实现了该接口的所有抽象方法,那么就表明该类遵守了该接口定义的标准规范。
接口可以理解为一种规范或约定,它定义了一组方法的签名,但不提供具体的实现;实现接口的类必须实现接口中定义的所有方法;接口可以让不同的类具有相同的行为特征,增强了代码的复用性和扩展性。
这就是接口的定义方法🙋♂️。
这就是接口的使用方法🤦♂️。
4.抽象类与接口的区别
抽象类和接口有一些区别😉, 抽象类可以有具体的方法实现,也可以有非抽象方法;而接口中的所有方法都是抽象的。另外,一个类只能继承一个抽象类,但可以实现多个接口。
1. 抽象类像是一个框架,有一些具体的部分和一些待完善的地方;接口则更像是一份契约,规定了必须要做到的事情。
2. 抽象类是有血有肉的蓝图,接口则是纯粹的规范和约定。
3. 抽象类是一种模板,接口则是一种约束。
五、异常🌺
异常是程序运行时所遇到的非正常情况或意外行为。Java中所有异常都是Throwable类的子类,它派生出两个类,一个Error类一个Exception类,Error类称不能恢复的严重错误,通俗点讲就是你代码写错啦,或者你环境配的不对,Exception类分为必须处理的异常RuntimeException和不必须处理的异常IOEException。
必须处理的异常是指那些可能会导致程序出现严重错误或无法正常运行的异常,比如空指针异常、数组越界异常等,而不必须处理的异常则是指那些可以在一定程度上被忽略或处理的异常,比如一些业务逻辑相关的异常等。
要编写更好的异常处理代码,可以考虑以下几点呢😉:
1. 明确异常类型:准确捕获和处理可能出现的异常类型。
2. 提供有意义的信息:在异常处理中提供详细的错误信息,便于排查问题。
3. 避免过度捕获:只捕获必要的异常,避免捕获过多无关异常。
4. 合理处理逻辑:根据异常情况进行合理的处理,比如重试、记录日志等。
5. 保持简洁明了:不要让异常处理代码过于复杂,影响可读性。
六、集合框架🌻
集合分为单列集合(Collection)和双列集合(Map)
在 Java 中使用集合框架,首先需要创建相应的集合对象,比如 List 、 Set 、 Map 等,然后可以通过添加、删除、查询等方法来操作集合中的元素。
1. 在 Java 的世界里,集合框架是管理数据的得力助手,让我们轻松驾驭数据的海洋。
2. 利用集合框架,我们可以有条不紊地组织和处理数据,让程序更加高效和强大。
3. 集合框架就像是数据的家园,为我们提供了丰富的工具来照顾和运用这些宝贵的资源。
单列集合😎:
单列集合Collection分为Set和List,List添加的元素有序、可重复、有所以,Set添加的元素无序、不重复、无索引。
要实现集合的并发修改,可以使用一些线程安全的集合类,比如 ConcurrentHashMap 等,或者在进行并发操作时,通过加锁等机制来保证数据的一致性。
七、常见API
这块我会在别的文章里发,这个也没什么,就是一些API,小妙招
八、GUI图形设计
依旧同上🙋♂️🤦♂️,但是想学窗口设计我更建议C++,比Java好玩。