美文网首页
学习 Spring 时碰到的 Java 知识点

学习 Spring 时碰到的 Java 知识点

作者: SongLiang | 来源:发表于2017-11-04 15:13 被阅读0次

    mysql 启动

    http://www.jianshu.com/p/d1957a0e4e03

    alias mysql = /usr/local/mysql/bin/mysql
    alias mysqladmin = /usr/local/mysql/bin/mysqladmin

    mysql admin -u root -p password newpass --newpass 为新密码
    mysql -u root -p

    Java final 修饰符的作用

    在 Java 中,我们有时会使用final对变量进行修饰,被修饰的变量只能够被赋值一次。如果final变量是引用类型,则它将永远持有相同的对象的引用;如果是简单类型,则它会拥有着不变的值。
    那么,final变量就是我们所说的常量吗?事实上不是的,因为一个被final修饰的变量,虽然只能被赋值一次,但是如果它为引用类型的变量,那么它所指向的对象则可能改变。

    • final 的变量的值不能够被改变
      final 的成员变量
      final 的局部变量(形参)
    • final 的方法不能够被重写
    • final 的类不能够被挤成

    注解 @Override

    @Override
    public String toString() {
         return "xxxxx";
    }
    

    上面的代码中,重写了toString()方法并使用了@Override注解。但是,即使不使用@Override注解标记代码,程序也能够正常执行。

    那么,该注解表示什么?这么写有什么好处吗?

    事实上,@Override告诉编译器这个方法是一个重写方法(描述方法的元数据),如果父类中不存在该方法,编译器便会报错,提示该方法没有重写父类中的方法。

    注解 @Repository

    用于标注数据访问组建,即 DAO 组件。

    注解

    基本数据类型

    4类8种

    • 布尔
      boolean
    • 字符
      char (2字节)
    • 整数类型
      byte (1 字节 -128~127)
      short (2 字节)
      int (4 字节)
      long (8 字节)
    • 浮点数
      float(4字节)
      double(8字节)

    tips:

    • Java 中没有无符号类型的值
    • Java 语言中的整型常量默认为 int 型,声明 long 型常量可以后加 ‘l’ 或 ‘L’,如:
    • 看到一个整数,就会被当成 int 类型。看到一个小数,就会被当成 float 类型。
    int i = 600; // 正确
    long l = 88888888888L; //必须加 l 否则会出错
    

    例子

    class Main {
        public static void main(String[] args) {
            // boolean b1 = true;
            int i = 1, j;
            float f1 = 0.1f; // 或者写成 (float)0.1, 这两者是有区别的,0.1f 表示把 double 类型的 0.1 转成 float 存在计算机中,0.1f 本身就是一个
            float f2 = 123; //
            long l1 = 12345678;
            long l2 = 88888888888888l;
            double d1 = 2e20;
            double d2 = 124;
            byte b1 = 1;
            byte b2 = 2;
            byte b3 = 125;
            // j = j + 10;
            i = i / 10;
            i = (int)(i * 0.1); // i * 0.1 是 double,必须转成 int
            char c1 = 'a';
            char c2 = 125;
            byte b = (byte)(b1 - b2); // 错误 首先转换成 int 进行计算
            char c = (char)(c1 + c2 - 1); // 错误 计算时,首先会转换成为 int ,最后转成 char
            float f3 = f1 + f2;
            float f4 = (float)(f1 + f2 * 0.1); // 0.1 是 double,先转成 double 计算
            // double d = d1 * i + j;
            float f = (float)(d1 * 5 + d2);// double 转成 float 要用强制转换符
    
            System.out.println("test");
        }
    }
    

    break 、 continue 、switch

    break 语句用语终止某个语句块的执行。用在循环语句体中,可以强行退出循环;
    例如:

    • break
    public class Test {
        public static void main(String[] args) {
            int stop = 4;
            for (int i = 1; i <= 10; i++) {
                if (i == stop) {
                    break;
                }
                System.out.println(" i= " + i);
            }
        }
    }
    
    • switch
      没有写 break,就会造成 case 穿透。
    public class TestSwitch {
        public static void main(String[] args) {
            int i = 13;
            switch(i) { // java 这里面只能探测 int 类型e的数据
                // char short byte 都可以,他们都可以转化成为 int 类型的数据
                case 1:
                    System.out.println("1");
                    break;
                case 2:
                    System.out.println("2");
                    break;
                case 3:
                    System.out.println("3");
                    break;
                default:
                    System.out.println("error");
            }
        }
    }
    

    方法的本质是什么?

    增强我们代码的复用性。

    首先定义类,才能有对象

    为什么用对象

    对象都有对外服务的接口(通过继承可以复用)
    对象隐藏内部服务的实现(通过聚合可以复用)

    成员变量与局部变量的区别

    在定义成员变量时可以对其进行初始化,如果不对其初始化,Java 使用默认的值对其初始化。
    而局部变量如果不初始化,就会出问题。

    引用类型与基础类型

    基础类型在内存中就占一块区域,除基础类型之外的都是引用类型,在内存区域中占两块内存。

    约定俗称的命名规则

    • 类名首字母应该大些
    • 变量名和方法名的首字母应该小写
    • 运用驼峰标识

    构造方法的重载

    构造函数也可以被重载,可以增加构造过程的灵活性。

    遇到复杂表达式时,从里向外分解

    链式调用

    在栈内存中会连续生成多个临时引用

    static 关键字

    • 在类中,用 static 声明的成员变量为静态成员变量,它为该类的公用变量,在第一次使用时被初始化,对于该类的所有对象来说,static 成员变量只有一份。
    • 用 static 声明的方法为静态方法,在调用该方法时,不会将对象的引用传递给它,所以在 static 方法中不可访问非 static 的成员。
      -- 静态方法不再是针对于某个对象调用,所以不能访问非静态成员
    • 可以通过对象引用或类名(不需要实例化)访问静态成员。

    方法的重写

    • 在子类中可以根据需要对从基类中继承来的方法进行重写。
    • 重写方法必须和被重写方法具有相同方法名称、参数列表和返回类型。
    • 重写方法不能使用比被重写方法更严格的访问权限。

    继承中的构造方法

    • 子类的构造的过程中必须调用其基类的构造方法
    • 子类可以在自己的构造方法中使用 super(argument_list) 调用基类的构造方法。
      使用this(argument_list)调用本类的另外的构造方法。
      如果调用 super,必须写在子类构造方法的第一行。
    • 如果子类的构造方法中没有显示地调用基类构造方法,则系统默认调用基类无参数的构造方法。
    • 如果子类构造方法中既没有显示调用基类构造方法,而基类中又没有无参的构造方法,则编译出错。

    对象转型(casting)

    • 一个基类的引用类型变量可以“指向”其子类的对象。
    • 一个基类的引用不可以访问其子类对象新增的成员(属性和方法)
    • 可以使用引用变量 instanceof 类名来判断该引用类型变量所“指向”的对象是否属于该类或该类的子类。
    • 子类的对象可以当作基类的对象来使用称作向上转型(upcasting),反之称为向下转型(downcasting)

    interface

    • 从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。
      举例子:
    public interface Runner {
        public static final int id = 1;
    
        public void start();
        public void run();
        public void stop();
    }
    

    异常

    Throwable:

    • Error (系统错误,虚拟机出错,不可处理,不用处理
    • Exception: 其中包括 RuntimeException (Exception 可以处理,(另一类是必须得逮住的 Exception,比如 IOException)

    相关文章

      网友评论

          本文标题:学习 Spring 时碰到的 Java 知识点

          本文链接:https://www.haomeiwen.com/subject/uxxouxtx.html