java 基础学习1
Posted Wsnan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 基础学习1相关的知识,希望对你有一定的参考价值。
编译之后运行的时候直接 java Welcom不要加后缀.class了不然会报错
千万不要逃避错误,
常量; 程序运行过程中值不能发生改变
字面常量和符号常量
变量前面加上final 修饰后,一旦赋初值不能再更改,的叫符号常量
浮点型:
float f =3.14F;
double f2 = 3.14D; (D可加可不加)
浮点数不精确,一定不要用于比较,需要使用BigDecimal进行比较
BigDecimal 是需要导入,math包下面
spring 核心
ioc/di:控制反转/依赖注入
aop:面向切片
声明事务
容器:container
applicationContext,是BeanFactory子接口
spring3开始,把spring框架的功能拆分程了多个jar包,(包含jar包,jar包的说明文档,jar包的源码)
tomat是web容器,必须导入spring-web包才能用tomcat
ioc: 原先程序员主动通过
控制指的是:控制类的对象,反转指的是:
所谓的解耦是;程序员不需要管理对象,解除了对象管理和程序员之间的耦合
spring 不依赖于servlet: 必须的包,commons-logging spring-beans spring-context spring-exception
配置文件:applicationContext.xml(所有的东西都放在这个里面,spring中最大的容器是applicationContext)
static 的方法:在主方法中可以直接调用,不需要new
方法的重载:方法名称相同,方法的参数类型或这参数的个数不同,都可以构成重载
递归和迭代:
递归:自己调自己,
重载:overload
重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。
每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。
最常用的地方就是构造器的重载。构造函数的重载,
继承:继承只有单继承,只有一个直接父类
接口可以多继承,类只有单继承
重写:override,子类重写父类的方法
重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!
重写的好处在于子类可以根据需要,定义特定于自己的行为。
Object类:所有对象的父类
Object中的 toString方法
toString的重写:
System.out.println()
equals 和 ==
封装的使用 :对类,类中的方法或者属性进行访问控制,访问控制符
private 表示私有,只有自己能够访问,别人看不到,
default:类,属性,方法,什么控制符都不加,就是default,同一个包下面的所有类可以使用,不在同一个包下面的类之间不能访问调用,对于类中的默认方法默认属性以及默认的类,只有本包,之间可以访问,不在同一个包下面的不能调用
public :公共的,所有的都可以访问使用类,属性,方法
protected:同一个包的类,不同包的继承了该protected属性所在类的子类可以调用父类中的protected方法
一般来说,类的属性都使用private(别人必须通过get set方法访问);类的方法一般都是public,除非有什么
对于boolean类型的属性,private boolean id; isId() 代替 getId()
多态:
父类引用指向子类对象:
声明一个父类类型的对象,传递子类对象给声明的父类对象
eg:
Animal 是父类 dog cat 是子类
animalCry(Animal a)方法形参是一个Animal的父类对象,animalCry(new Cat()),给 a 传递一个cat的子类对象,此时调用的就是cat子类的shout()方法,如果传递dog的子类对象,那么调用的。a.shout()调用的就是dog类中的shout方法
创建的animalCry()方法实现了父类引用指向子类对象,
Animal a = new Dog() 最后这个a 调用的是 Dog类的方法,
自动向上转型:子类转换成父类对象,
Animal d = new Dog(),
父类d只能调用和子类共有的方法,不能调用子类自己的方法
向下转型:父类转换成子类对象
Dog a = (Dog)new Animal() 必须强制转换,不能实现自动转换
关于 转型后方法的调用 ????????????没懂
final修饰属性,表示该属性为常量,程序运行中,该属性的值不能被改写
final 修饰方法:
子类继承后不能改写final修饰的方法(不能重写 ,override)
final 修饰类;表示该类不能再被继承,
数组foreach循环:
for(int a : iteral){ 循环读取 iteral中的值 放到 a中
System.out.println(a)
}
p87...
p132 泛型 jdk1.5以后增加的:建立类型安全的集合
写代码一定注意各种变量类型 输入输出到底是什么类型的 ,尤其是基本数据类型还是 对象类型的,要注意之间的转换
没有加泛型之前的写法
泛型示例:
在类的声明处加泛型列表。如<T,E,V>
MyCollection<String> mc = new MyCollection<String>();
jdk1.7之后 MyCollection<String> mc = new MyCollection<>(); 后面的String可省略
泛型在集合中的应用;
容器:
Colletion接口下面还有两个接口 List和?
List下面还有ArryList
public interface Collection<E> extends Iterable<E> {
}
Collection类中包含的方法;
Collection<String> c = new ArrayList<>();
c.size(); 判断容器的大小
c.isEmpty(); 判断是否为空
c.add(""); 增加一个对象
c.remove(); 指的是 移除了容器对象中的内容,但是这个容器对象还是存在的,只不过是容器对象空了
容器对象存储在栈内存,容器对象的值存储在堆内存
c.clear();清楚容器内的所有内容
c.toArray();转换成数组
c.contains("22"); 判断c中是否包含22
c.equals();
list01.addAll(list02);
list01.removeAll(list02);
list01.retainAll(list02); 判断list01中是否包含list02中的所有的元素,是 返回true.否 返回false
注意; List可替换成 Collection,这里使用的是List讲解的Collection的方法
容器 Set<> List<>都是Collection的子接口,继承了Collection ,很多方法和Collection 一样
List 是一个有序可重复的容器 底层是数组 允许加入重复的元素,List通常允许满足e1.equals(e2)的元素重复加入容器
List 常用的实现类 ArrayList LinkedList Vector
ArrayList底层是数组 LinkedList底层是链表 ,Vector底层也是数组(是线程安全)
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
add(E e); boolean add(E e);
void add(int index, E element); list(3,"haha"); 这个是在下表是3的地方插入
list.get(2) 得到下标为2的元素
set(2,“”)在下表是2地方设置为,替换
int indexof(Object o); 返回指定的元素第一次出现的索引,如果不存在返回 -1
int lastIndexOf(Object o) 返回指定的元素最后一次出现的索引,如果不存在返回 -1
查询效率使用 ArrayList 增删效率 LinkedList 线程安全 Vector
数组长度不能改变 ArrayList如何实现放置任意数量的对象? 扩容 ,本质 定义一个更长的数组,原样拷贝下来
p137--看到 4分半
------------------------------------------
spring boot项目结构
api层
common层
provider层
api层 ---controller(这个是后端服务之间互相调用,专门放置接口 CourseInfoController)/service(这个是跟前端有交互 ,放置接口 CourseInfoService)
provider层--controller(这个里面放置 api层中对应接口的实现类 CourseInfoImpl)
action 负责整体之间的调度,action--controller/service
arg---放置请求 参数 result---放置返回参数(接口之间实现调用的输入输出)
entity; 跟数据库操作有关的,最常用实体类,基本和数据表一一对应,一个实体一张表。
Po (persistant object) ,
代表持久层对象的意思,对应数据库中表的字段,数据库表中的记录在java对象中的显示状态,最形象的理解就是一个PO就是数据库中的一条记录。
好处是可以把一条记录作为一个对象处理,可以方便的转为其它对象。Vo和Po,都是属性加上属性的get和set方法;表面看没什么不同,但代表的含义是完全不同的。
po是实体类,里面存放的是数据库中的一条记录,数据库中一条记录的每一个字段
Dto (data transfer object)
简而言之,就是接口之间传递的数据封装
表里面有十几个字段:id,name,gender(M/F),age……
页面需要展示三个字段:name,gender(男/女),age
DTO由此产生,一是能提高数据传输的速度(减少了传输字段),二能隐藏后端表结构
Dao (data access object) :负责跟数据库交互
代表数据访问对象的意思,是sun的一个标准j2ee设计模式的接口之一,负责持久层的操作 。这个基本都了解,Dao和上面几个O区别最大,基本没有互相转化的可能性和必要,主要用来封装对数据的访问,注意,是对数据的访问,不是对数据库的访问。
dao里面放置的还是实现类,实现的功能就是对数据的操作,包含对po的实体类的操作,实现对数据库的增删改查,
java反射机制
1 可以根据对象找到对象的根源(实例化的对象.getClass()方法就可以得到该对象的类型)
先看正的情况:正就是1 先导入要使用的类所在的包,知道类的出处,2通过类实例化对象,3 根据对象调用类中的方法
反 是: 根据类的实例化对象,反推类具有的成员变量和方法(在运行时构造一个类的对象;判断一个类所具有的成员变量和方法;调用一个对象的方法;生成动态代理。反射最大的应用就是框架。)
范例:通过Date的实例化对象,通过 date.getClass()方法反推出该对象的类型,(可以帮助使用者找到对象的根源)
2 反射中所有的核心操作都是通过Class类对象展开的,可以说Class类是反射操作的根源所在,要想获取Class类的实例化对象可以采用三种方式进行
(这里的Class类说的是java.lang.Class)
以上是关于java 基础学习1的主要内容,如果未能解决你的问题,请参考以下文章