2020-01-03

Java复习

    Java的基础知识

    1.变量和数据类型以及类型的转换

          基本数据类型 :byte short  int  long float double boolean char

          类型的转换: 自动类型转换  强制类型转换

          比如:一个int类型与double类型转换,最终的结果是double类型

          char c1 = '\n';      char c1='\n';  \n转义符代表换行    \t 表示制表符Tab

          int aa = 34; int aa='A';

          浮点数默认为double

          float f =3.14;错的 需要强转 下面2种类型

          float f =(float)3.14;

          float f=3.14F;

          double ff =3.14;(常用)

          boolean 类型默认值为False(常用)

          boolean isRight = false  boolean isRight = null;(只有引用类型才能赋值为null)

    2.运算符

          算数运算符 : + - * / %

          一元运算符 : ++ --

          int x = 10;

          System.out.println(x++); 10

          System.out.println(x); 11

          System.out.println(++x); 12

          System.out.println(x);  12


            int a = (x++)+(++x)+(--x);

                    10    12    11

          赋值运算符 : = += -= *= /= %=

          逻辑运算符 : &&  ||  !      &&与&区别    || 与|的区别

          比较运算符: > < >= <= !=

          三元运算符: ?:


  3.基本语法:

    if...esle

    if...else if...else 

    switch 

    while

    do...while();

    for


  4.数组

        数组如何定义,如何向数组中添加元素以及获取元素

        int[] array = new int[10];

        int[] array1 = new int[]{1,2,3,4,5};

        int[] array2 = {1,2,3,4,5};

        对象数组定义

      Employee emps1= new Employee[10];   

      Employee emps1= new Employee[]{new Employee(),new Employee()};

      Employee emps1= {new Employee(),new Employee()};

      for(int i =0; i<emps1.length;i++){

          emps1[i];

          System.out.printIn(emp.getName());     

      }   

      数组也是引用类型:默认值null

      String[] strs = null;

      可以向字符串添加3个""

      String[] strs = new String[3];

      for(int i = 0;i<3;i++);{

      strs[i] = "";

      }

      String[] strs = new String[]{"","",""};  不加长度就得在后面赋值

      String[] strs = new String[]; strs={"","",""};不正确的

      String[] strs = {"","",""};

      String[] strs = new String[3]{"","",""}; 不正确


      对数组的排序(冒泡排序法)

      for循环嵌套

      对二维数组了解,如何创建二维数组以及对二维数组的遍历



      5. 方法(函数):就是一个功能

        方法的定义: 有返回值的方法,无返回值的方法

        public  static void m1(String s){

        System.out.println(s);

        }


        public String m2(String name){

        return name;

        }


          方法的调用:

    类名.方法名       

            类名.m1("tom"); String name =  类名.m2("jazz");


            注意:

      1.在实际应用中,方法什么时候有返回的/无返回的  什么时候定义有参数的/无参数的

      2.参数表示用户的输入,而返回值表示方法的最终结果

      3.参数与返回值类型可以是基本类型也可以是引用类型


                  变量的作用域:

                  局部变量(方法中的变量) 写在方法里

                  成员变量(类中的变量)

                  注意:局部变量一定要先初始化然后才能使用

    int x  ;

  int[] array=new int[5];

  for (int i = 0; i < array.length; i++) {

x++; 报错,因为x没有初始化,就使用了。

}

Java面向对象基础:继承,封装,多态

  1.类与对象的关系,类中可以写什么,类中的方法如何调用

          类与对象的关系:类是抽象的,对象是具体的,对象是对模板的复制       

        创建对象的基本语法:  类名 变量名(对象名)=new 类名();

        访问对象中的属性行为: 对象名.属性      对象名.方法名()

    2.类中的方法重载 

    3.构造器:作用是初始化属性和对象 

    public 类名(){}

    调用构造器:类名 对象名= new 构造器(实参1...实参n);

匿名对象:  new 构造器().方法名;

注意:使用匿名对象调用方法的时候,这个方法只能被调用一次

          初始化属性 

    private Test(String name)  {

    this.name=name

    }

            初始化对象 

      private String[] array;

      private Emp emp;

public Test(){

array=new String[10];

emp=new Emp();

}


    调用构造器

    Test t = new Test("tom");

    Test t = new Test() 


    构造器也可以重载 


    继承: B extends A 为什么使用继承(体现到Java中的可重用性(少些代码))

      Java只支持单继承 

      注意:B类继承A类的时候会调用父类中的无参数的构造器,如果没有会报错

      public class A{

          public A(){

          }

          Public A(int a){

          System.out,println(a);


          }

      }


      public class B  extends A{


      }

      注意:this与super的区别

      this表示当前类自身的资源 ,放在构造方法的第一行

      super表示调用父类的资源

  this.属性名

  this.方法名()

  this():表示当前类中的构造器  注意: this()一定要出现方法的第一行


  super:

  super.属性名

  super.方法名

  super()调用父类中的构造器

4.方法重写(Override)

  要有继承关系,子类的方法与父类的方法相同,会继承父类的构造器,会调用子类重写后的方法

  注意:方法重载与重写的区别

  1.重载发生在一个类


  2.重写要有继承关系,与父类的方法一样


5.多态(三个条件)

1.要有继承关系

2.方法重写

3.父类的引用指向子类的对象      继承多态

public void m1(父类型)  m1(子类的对象)

public 父类型m2()        return 子类的对象

使用多态的好处:可以优化程序的设计,提高重用性。

注意:子类新扩充的方法对父类是不可见的。才需要引用类型的转换(向上造型:自动转换,向下造型:强制转换)

6.抽象类与接口

接口也是Java中多态的体现

抽象类(abstract):一个类中只要有抽象类,那么这个类一定就一定定义为抽象类 。

抽象类不能实例化(不能创建对象)

抽象类中可以有抽象方法也可以有非抽象方法,从规范来说我们抽象类中只写抽象方法。

在接口中:常量默认的都是 public static final

        方法默认的都是: abstract

public void m1(List list){}      调用方法 m1(new ArrayList());

public List(父类型) m2()                return new ArrayList(子类型)();

    接口与抽象类的区别

1.从规范来说: 接口会更加规范一些(常量以及抽象方法)而抽象类(变量,常量,非抽象方法)

2.类只支持单继承而接口可以实现多继承

3.使用接口的好处:接口灵活(接口和实现可以分离),解耦合(减少层与层之间的依赖)

  接口和抽象类都不能被实例化

类成员的访问权限修饰符:private  default protected public

  关于接口是如何进行解决耦合的。 参考三层结构


  7.设计模式:单例模式 (重要) 

  构造器是私有的   


  8.异常处理     

    Throwable 类是Java语言中所有错误或异常的超类,两个子类 :Error/Exception(需要程序员处理)     

    基本语法 try catch fanilly

    异常的两大类:非检查异常(RuntimeException)  检查异常


    try{

//有可能产生异常的代码

}catch(异常的类型  变量名){//catch 捕获异常  异常类型指的是:ArrayIndexOutOfBoundsException

    //处理。。。。    //子类的子类

}catch(异常的类型2 变量名){//子类

}catch(异常的类型3  变量名){//父类    从上往下,从小到大排

}finally{

//无论try中的代码有没有异常,都会执行finally中的语句

//在实际应用中主要用于对资源的释放

}   

      面试题:

throws 与throw 的区别

throws  写在方法的后面

表示异常的声明,它在定义方法的时候去使用,表示这个方法有可能会产生异常,但是我不会在这个方法中去处理,谁调用谁处理。

throw 表示人为的抛出异常,这个异常对象需要我们自己new    使用语法:throw new NullPointerException("");     

9.常用的工具:封装类 (8种)    字符串 (String)    SimpleDateFormat(格式化日期)   

    == 和equals的区别 (重要)

    ==:

    1.对基本数据类型进行比较,它比较的是值是否相等

    2.而引用类型比较的是内存地址

    equals:

    1.JDK文档中提供的一些系统类都重写了这个equals方法,比较的是内容是是否相等

    2.对于用户来说我们自定义的类如果没有重写Object中的equals方法,实际来说比较的是内存地址

    3.所以说对于用户的自定义类需要重写Object中的equals方法



  String 与 StringBuffer的区别

  StringBuffer的长度是可变的


10.集合

1.List  ArrayLast    add get Iterator

2.Set    HashSet/TreeSet  add  Iterator

3.Map    HashMap/TreeMap  put(key,value)  get(key)

  以上三种集合的特点:

  List是一个有序的集合,可以有重复的元素  extends Collection

  Set是一个无序的集合,不能有重复的元素    extends Collection

  Map是以键Key-值value的方式来保存元素,获取元素可通过Key就能获取到value

  Collection与Collections的区别


  Collection:接口      Collections:针对集合提供的工具类

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容

  • 先看深圳交易所方面: 上海莱士(002252) 号称血中茅台的中国第一股神,股难当头,挺身而出,悍不畏死,为国护盘...
    Lyrieek阅读 466评论 0 0
  • 2018.12.06 星期四 阴 亲子日记第370天 晚上跟女儿一起看了一个短视频“我也是第一次做妈妈”,这次女儿...
    涓涓流水_672f阅读 182评论 0 1
  • 在现在女生越来越多,男生越来越少的年代,似乎女生也比之前更加独立了,其实觉得这是一个好事,虽然男生说多了越来越多的...
    自媒体人豆丁阅读 717评论 0 49
  • 有一天,我回外婆家。好朋友知道我回来了,就叫了几个朋友来和我玩捉迷藏。 我们几人约好了:石头剪刀布,谁输,...
    故乡先生阅读 217评论 1 3