其实并没有什么用,只是用来训练一下md的写法和hexo的一些命令,Java是一个完全面向对象的东西,有过C和C++的基础,学起来会狠轻松,稍微写一下与C不同的东西
public:可以省略,默认为public
创建新文件:File->new->java peoject->sre->右键->new->class
调节字体快捷键: ctrl-+=(_-)
扩展以及快捷键:
syso+(alt+/) : 扩展成为System.out.println();
main+(alt+/) :扩展main
ctrl+shift+o :import java.util.Scanner;(需要再用了函数的情况下导入)
ctrl + 鼠标点击: 查看详情
Ctrl+m :左右框消失
alt+s:Generate Getters and Setters…,get和set函数;Constractor 构造函数
Scanner scanner = new Scanner(System.in);
鼠标选择部分代码 然后ctrl+shift+/ 注释
ctrl+d : 删除一行
如果是static声明的对象,可以直接用类名加函数名的方法调用函数 class.func()
float的最大值(同理可求最小值,double类似)
1 | float a; |
注释:和c一样,加了一个文档注释/** 然后回车
标识符:数字 字母 下划线 美元符号$
数据类型:
byte(位) 8位
long 64位
boolean 布尔类型 true||false
小数默认是double类型,所以必须加一个f表示float类型
float f = 1.1f;
//Unicode表示字符
char c1 = ‘\u66f9’; \u+编码 上网查
&&短路与 前面不满足条件 直接返回 效率高
&不断路与 所有判断完才返回
^ 异或 关于表达式
break结束本层循环
break加标签(outer)是跳出被标签标记的循环
1 | outer: |
return 直接跳出循环
数组定义的两种方式: //栈区初始化为0 默认值是0
int[] []int
静态初始化:
1 | int arr[] = new int[] {1,2,3}; |
动态初始化:
1 | int a[] = new int[3]; 二维静态初始化: |
二维动态初始化:
1 | int a[][] = new int[3][3]; |
遍历数组:
1 | for(int i=0;i<arr.length;i++) |
类和对象:
1 | Person yy;//定义对象 |
函数
对于函数参数的传递,若传送的是对象,则传递的是引用(地址),在函数中改变对象的值,对象的值会真的改变
1 | //不固定参数的写法 类型+...然后起个名字 |
返回值
返回值和c差不多,不在赘述
方法
方法的重载:
1 | public class study { |
静态调用方法
1 | public class study { |
递归调用方法::不赘述
this的使用,表示此本对象
1 | Person(String name, int age) { |
String类:
1 | String name1 = "yy";///在对象池赋值 |
字符串的反转:
1 | String name = "123456789"; |
字符有很多要学习的对方,得刷题熟悉一下。
继承
一个包中已经定义了一个Person的类,在另一个Class中定义Yy类,可以这么写
1 | public class Yy extends Person |
搜一下super的用法,这个不是视频能够完全弄好懂的。
final
1.final声明的类不能被继承
2.final声明的方法不能被子类覆盖
3.final声明的变量不能被修改,即为常量
1 | public final class Person |
抽象类
1 | public abstract class Study{ |
相当于模板,天生的父类,不能被实例化,在子类中要具体实现父类中的函数。
在抽象类中函数只需要声明,不能够实现。
接口
interface定义接口
1 | public interface A{} |
implement实现接口
1 | public class Test implement A |
先继承,后实现接口(写下class这一行的)
接口的继承:接口可以多继承
多态
1 | //父类引用指向Dog类的具体实现 |
转型
1 | Dog dog = (Dog)animal;//向下转型 |
Object
Object是所有类的父类
instanceop
返回布尔类型
1 | System.out.println("dog对象是否属于Animal类"+(dog instanceof Animal)); |
1 | public static void func(Animal animal){ |
匿名内部类
只使用一次,这个不太明白
包装类
装箱和拆箱
1 | int a = 1; |
自动装箱和拆箱
1 | Integer i = 1; //自动装箱的过程,自动把数据转化为对象 |
作用
1 | String a = "1"; |
设计模式
饿汉式,懒汉式-单例化
1 | ///饿汉式单例实现 先new出一个对象 |
1 | //懒汉式单例实现 在第一次调用的时候实例化 |
常用类
日期类:Date
1 | Date date = new Date(); |
日历类:Calendar
1 | Calendar calendar = Calendar.getInstance();//实例化:静态方法,返回一个Calendar实例 |
SimpleDateFormate:
1 | SimpleDateFormat sdf = new SimpleDateFormat(); ///实例化对象 |
将输出格式进行封装:
1 | public class Person { |
String和StringBuffer:
String:对String类型的操作对象,等同于重新生成一个对象,然后将引用指向它;
StringBuffer:操作的始终是一个对象;
1 | StringBuffer s = new StringBuffer("123"); |
数学:math(很多都是static类型,类名加函数直接调用)
1 | Math.max(1,2);//比较最大值 |
数组:Arrays
1 | int arr[] = {5,1,8,44,3,5,8,4,3}; |
泛型
泛型引入:
我们知道Object是所有类的父类,所以可以运用这个。(这不是泛型)
1 | //ClassOne.java |
泛型:(感觉和c++的差不多一个意思)
1 | ///ClassType 文件 |
泛型限制
1 | public class ClassType<T extends Animals> {} ///泛型限制 |
通配符泛型
1 | public static void take(ClassType<?> a){} //函数 |
集合
父类:Collection
List是Collection接口的子接口,也是最常用的接口。此接口对Collection接口进行了大量的扩展,List集合里的元素是允许重复的。
1 | //链表 LinkedList |
1 | //ArrayList |
1 | //HashMap |
集合的遍历
Iterator遍历集合
1 | public static void main(String[] args) { |
foreach集合
1 | for(Person P:L) |