前言
在学习新的东西的到运用到灵活运用的过程,我总结的步伐是:
知道这个东西有什么->怎么可视化了解它->怎么模仿使用它->可以怎么灵活运用它 |
java基本数据类型
java有8种基本数据类型,int、long、float、double、char、byte、short、boolean;
int整数类型,占用32位,常用为:int a=1;系统默认值为0;
long长整数类型,占用64位,常用为:long b=1L;默认值为0L,它需要带小写的l或者大写的L后缀;
float浮点数类型,占用32位,常用为:float c=1.0f;默认值为0.0f,它需要带小写的f或者大写的F后缀;
double双精度浮点数类型,占用64位,常用为double d=1.0d;默认值为0.0d,如果不带后缀的浮点数通常为double类型,通常使用就不带d或者大D;
char类型我们只要知道它存储一个字符使用英文的单引号包围常用为:char e='a';
byte字节,通常用于传输解析的内容,将对象解析为字节数组,默认值为0;
short数据类型占用16位,默认值为0;
boolean数据类型,占用一位表示,例如开关true/false,在数据表现上0表示false,1表示true;
注意:业务代码中其实用得比较多的是:int、long、double、boolean、byte(主要是io操作时候用得多)
java的引用类型
除了基本数据类型可以把其他的数据类型都可以认为是引用类型(string类型除外,这个类型比较特殊)
集合通常就是容器用于存储数据的,它有两种变现形式,有列表(Collection,子接口有:list、set、queue)和映射(map接口);
集合,常用有序列表(list)实现ArrayList和LinkedList,常用ArraryList(对于初学者知道使用这个就行),无序列表(set)实现HashSet并且存储的内容是不重复的;队列(queue)初学者用得少可以先不关注;
映射(map),通常使用的实现HashMap,数据表现形式就是key+value;
数组,其实数组就是存储多个数据的对象例如int[]可以存储多个int数据类型,但是它的大小在初始化的时候就是确定的;
类,抽象出各种表述对象的实体类,用于编写各种业务逻辑的封装类,等等都是引用类型;
java面向对象
类的定义、继承、实现、多态、封装、接口;
定义一个类需要class后写类名,通常名字需要与表达出这个文件是干嘛的,名字头字母最好大写;例如下面,定义了一个HelloWorld类,文件名需要与这个类名一样(这里不钻牛角尖,什么内部类啥的);
package com.demo.main;
import java.util.Random;
public class HelloWorld {
public static void main(String[] args) {
Random b = new Random();
int i=b.nextInt(1000);
System.out.println("获取随机数为:"+i);
}
}
接口,接口相当于一个设想或者一个目标,它不能进行实例化(创建对象普通的接口),它的出现就是为了定义多种行为的一种抽象,比如定义一个人的日常行为,吃饭、付钱、出行;实现一个学生的类,在实现一个老师的类,学生对吃饭的实现是去食堂吃饭,付钱刷饭卡,出行步行;老师对吃饭的实现是去教室食堂吃饭,付钱微信,出行自行车;
代码如下;
接口类:
package com.demo.main;
/**
* 行为类
*/
public interface Action {
void eat();
void run();
void pay();
}
学生的实现类:
package com.demo.main;
public class Student implements Action{
@Override
public void eat() {
System.out.println("去食堂吃饭");
}
@Override
public void run() {
System.out.println("出行,步行");
}
@Override
public void pay() {
System.out.println("刷返卡");
}
}
老师的实现类:
package com.demo.main;
public class Teacher implements Action{
@Override
public void eat() {
System.out.println("去教室食堂吃饭");
}
@Override
public void run() {
System.out.println("骑自行");
}
@Override
public void pay() {
System.out.println("刷微信");
}
}
测试类:
package com.demo.main;
public class TestAction {
public static void main(String[] args) {
Action a = new Student();
Action b = new Teacher();
a.run();
a.eat();
a.pay();
System.out.println("==============");
b.run();
b.eat();
b.pay();
}
}
结果输出:
测试得买执行相同的方法却有不同的输出内容,那么可以看出具体怎么做的需要对应的实现类去做,接口不关注实现;
实现,实现就像上面的学生和老师的类实现了某个接口,然后把对应的接口方法进行了一次落实需要怎么做;
继承,继承可以变现为两种形式,接口与接口之间的继承,也就是a接口继承b接口,那么a接口就具有b接口定义的行为方法,类与类之间的继承,就是c类继承了d类,那么c类的实例对象就具有了d类的公开成员变量和公开方法的能力;表现形式定义两组类和接口来说;
b接口:
package com.demo.main;
public interface B {
void eat();
}
a接口:
package com.demo.main;
public interface A extends B{
void run();
}
如果实现a接口,那么就需要实现两个方法,eat()和run();
d类:
package com.demo.main;
public class D {
public int age;
public String name;
public void print() {
System.out.println("age:" + age + ";name:" + name);
}
}
c类:
package com.demo.main;
public class C extends D{
}
测试类:
package com.demo.main;
public class TestCD {
public static void main(String[] args) {
C c = new C();
c.age=18;
c.name="linmengfan";
c.print();
}
}
输出结果:
我们在C类上并没有定义任何内容,但是可以进行赋值属性值以及执行方法;
封装,我们就简单的定义为,把某些内容放到某个盒子里面盖住;
java修饰符
java修饰符有,有份访问修饰符public、private、protected、default默认和非访问修饰符static、final、abstract、synchronized、volatile等
访问修饰符用于定义类或者方法的访问级别,非访问修饰符通常用于对类或者方法标记它是什么或者它要怎么做;
直接截图:
java运算符
运算符有:算术运算符、逻辑运算符、关系运算符、位运算符、赋值运算符、其他运算符
算术运算符:就是通常的数学形式的加(+)、减(-)、乘(*)、除(/)、取余(%);
逻辑运算符:与(&&)、或(||)、非(!)
关系运算符:==、>=、<=、!=
位运算符:在算法上很有用,目前这里不讲;
赋值运算符:=、+=、-=
其他运算符:三目运算:a?b:c;如果a为真那么就返回b,如果a为假那么就返回c;
业务代码常用的运算符有:算术运算符、逻辑运算符、关系运算符、赋值运算符、三目运算;
java循环结构
java的循环结构有for,while,do while。
结构:for(int i;i<10;i++){},while(boolean){},do{}while(boolean);
截图图解:
while和do while的区别就是,do while至少会执行一次方法体内的逻辑;
java条件语句
java的条件语句:if,if else,if else if;等往下延续或者嵌套;
java的switch case语句
有些逻辑可以代替if else;
如果没有break,那么它会继续往下执行;
java的变量
java的变量有,局部变量,形参变量,成员变量,静态变量(类变量),常量(不可以再次修改的变量);
局部变量,在方法中定义的变量,它的作用于离开方法之后就消失了;
形参变量,其实跟局部变量一样,只是它是由某个方法传递将来的;
成员变量,就是定义某个类里面的属性;
静态变量,就是定义变量的时候在类型前面使用static修饰了;
常量,就是定义变量的时候使用final和static进行修饰了。
java的方法
java的方法需要解决这几个问题,可以给谁用(确定访问修饰符)、是不是类的还是实例的(是否使用static修饰,使用了那么就是属于类的方法)、是否需要返回数据(void那么就是不返回数据,否则需要指定相关的返回的数据结构类型)、这个方法的名字、方法需要的参数(非必要)、是否抛出异常(非必要);
在下面创建的实例中只能调用公有方法,不能调用私有方法;
java对象的构造函数
对象的构造函数,其实就是创建这个对象的时候方法吧。如果没有定义其他的构造函数那么就会有一个默认的构造函数,公有修饰符然后类名然后括号大括号;
这个就是调用了默认的构造函数;
如果添加了其他的构造函数那么,默认函数就会没有了,除非自己定义一个无参的构造函数;
java类和实例的关系
类是一种抽象,实例是一个表示,怎么理解呢。比如身份证是一个类,类里面有出生年月、名字、身份证id号、民族、失效日期等属性。实例就是具体的一个数据表示例如:姓名:小明,出生日期:1991年1月1日,身份证id号:11414199101234584,民族:满族,生效时间:2021年12月1日,失效时间:永久;
java创建实例对象
java创建对象有两种,一种是通过new的方式,一种是通过jdk的反射机制(框架通常使用);
通过以上的内容我们就开始如何编写逻辑了。然后在写业务代码,然后在研究框架;时间不早了,居然写了三个多小时;十一点了洗洗睡把;