zoukankan      html  css  js  c++  java
  • 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)

     
  • 相关阅读:
    C语言初学者代码中的常见错误与瑕疵(22)
    ANSI C (83)和87 ANSI C 这两个标准存在么?
    常见的认证
    python入门(一)
    Altium Designer重装后图标都变白板或都变一样的解决方法
    转:关于S参数的一些理解
    射频与微波测量之S参数
    驻波比
    PCB特征阻抗计算
    函数的形参(非引用形参、指针形参、引用形参)
  • 原文地址:https://www.cnblogs.com/wsnan/p/11816068.html
Copyright © 2011-2022 走看看