zoukankan      html  css  js  c++  java
  • JavaSE基础

    1.方法就是函数,方法不能嵌套定义;要定义在类当中;
    2.当返回值为void时,可以在方法结尾直接写return;也
       可不写,系统默认填上return.
    3.方法重载的定义:在同一个类中的多个方法,他们的方法名相同
       参数列表不同,称为方法重载。方法重载与返回值类型无关。

       4.数组的初始化有动态初始化和静态初始化。
       动态初始化:只指定长度,有系统给出默认值。
       静态初始化:给出初始化值,又系统决定数组长度。

       5.用 int[]arr=new int{}创建数组,然后再 int[]arr2=arr;
       这时两个数组名引用一个内存;

       6.数组使用常见问题:
           1)数组索引越界异常:ArrayIndexOutOfBoundsException
            也就是访问了不存在的索引。
           2)空指针异常:NullPointException方法
            数组名存的是null,而不是数组的地址

       7.数组属于引用类型,引用类型的变量作为参数传递给方法时,
         传递的是地址值;基本类型的变量作为参数传递给方法时传的是值;

       8.成员变量:类中,方法体外;局部变量:方法的参数列表或者方法体语句。
         Java中使用变量遵循“就近原则”,如果局部位置没有,就去成员位置找,
         还没有系统就报错;(但是在继承中,子类可以去父类中找)

       9.自定义类属于引用类型,在作为方法形参时传递的是地址值。

       10.成员变量与局部变量的五大区别。

       11.public一般用于修饰方法;private一般修饰成员变量;
          被public修饰,能被所有类调用;
          被private修饰,只能在本类中使用;

       12.this关键字:表示本类对象的引用,本质是一个对象。
          特点:每个普通方法都有一个this,谁调用该方法,this就指向谁。
          用法:this.属性名或this.方法名(参数);

       13.this可用于成员变量和局部变量重名的情况。

       14.构造方法的作用是初始化对象。构造方法没有返回值类型,
       连void也不能写。只能 修饰符 方法名(参数){};

       15.当你不写无参构造方法时,系统默认加上它;

       16.arr sc=new arr();如果括号内啥都不写,则调用的是无参构造函数;
         如果写了,则调用有参构造函数。

       17.标准的Javabean类写法:
          1)方法都是公共的
          2)成员变量用private
          3)有setxxx和getxxx方法;
          4)有全参和无参构造方法;

       18.子类只能继承父类的非私有成员(成员变量,成员方法);

       19.Java中使用变量的规则:就近原则
             1)先找局部变量
             2)没有,再找本类中的成员变量
             3)没有,再去父类中的成员变量找,
             4)还没有,就报错。

       20.当面对父类中的成员变量和子类的成员变量和局部变量相同时,
          区分他们可以使用super和this;
          super代表父类中的成员变量;
          this代表子类中的成员变量;

       21.继承中重名的方法:
           1)父类功能不满足现状,需改进,用super.方法名调用父类
              方法,再改进
           2)父类方法已过时,重新定义,叫方法覆盖;

       22.子父类的构造方法:
           1)子类所有的构造方法的第一行都有一个默认的super()用
              来访问父类的无参构造方法;
           2)如果父类没有无参构造方法,可以通过super(参数)的形
              式来访问父类的带参构造方法

       23.四大权限修饰符的修饰范围从小到大为:
         private->默认(啥都不写)->protected->public
         注意:子类的修饰符范围不能小于父类。

       24.private:强调的是给自己使用
          默认:强调的是给同包下的使用
          protected:强调的是给子类使用
          public:强调的是给大家使用

       25.Java中实现多态的三大步骤:
           1)要有继承(或者实现)关系
           2)要有方法重写
           3)要有父类引用指向子类对象;

       26.多态中调用成员方法是编译看左(左边类型有没有这个成员)
          运行看右(运行时看的是右边的成员);

       27.多态的使用场景:父类型可以作为形参的数据类型,这样
          可以接收任意的子类对象。

       26.多态中成员变量不涉及重写。
          再多态中使用成员变量遵循“编译看左,运行看左”;
          Animal an=new Dog();

       27.多态的弊端:父类引用不能使用子类的特有成员。
          解决办法:类型转换
          注意:1)只能在继承层次上进行转换,否则报ClassCastException异常
                2)将父类对象转化成子类之前,使用instanceof关键字检查
                
       28.instanceof关键字的用法:对象名 instanceof 数据类型
          意思是判断前边的对象是否是后边的数据类型;

       29.抽象方法只能定义在抽象类中,抽象类中可以没有抽象方法;

       30.抽象类的子类:
          1)普通子类:必须全部继承父类的方法
          2)抽象子类:不需要继承;

       31.抽象类中的成员比普通类多一种:抽象方法,其他的和普通类一样;

       32.在实际开发中,子类一般有两个构造方法:
          子类的无参构造方法访问父类的无参构造方法
           子类的全参构造方法访问父类的全参构造方法;

       33.final关键字:
          1)修饰类,不能有子类,但能继承其他的类;
          2)修饰方法:则该方法不能被重写;
          3)修饰成员变量:如果修饰基本类型的变量,值不变;
             如果修饰引用类型的变量,地址值
             不变,属性值可以边(了解);

       34.static关键字:能被本类所有对象共享;
          任意对象能对其值进行改变,不安全,所以用final修饰
          public final static String name="mmm";(公共的静态常量)

       35.静态成员属于类;

       36.static关键字修饰成员方法:变为静态方法,静态方法中没有对象this,
          所以不能访问非静态成员。
          引用:类名.成员对象
                类名.成员方法(参数)

       37.接口是一个比抽象类更抽象的类,所以不能直接实例化,要子类创建对象;
          接口引用指向子类也是多态;(可以将接口理解为统一的标准,例如USB接口)

       38.接口中的成员方法系统默认为public abstract,不写系统就会加上;

       39.接口的定义为:interface 接口名{};与类定义相似;

       40.接口特点:
          1)接口不能实例化,要通过多态的方式实例化子类对象;
          2)接口的子类可以是抽象类(不必继承接口的方法),可以是普通类
             要继承接口的方法;

       41.对于一个类来讲,他的父类(继承的关系)中定义的都是共性内容
          他的父接口(实现的关系)中定义的是拓展内容

       43.类与类之间是继承关系(extends),只能单继承,可以多重继承
          类与接口是实现关系(implements),可以单,多实现;
          接口与接口是继承关系,可以单,多继承;

       44.接口中只有成员常量,因为所有的变量前都有默认的
          public static final

       45.接口中成员方法可以是jdk7抽象的,jdk8静态(static)和非静态(default)
          的和jdk9私有的(private);

       46.Java中三大工具:API(帮助文档),集合,IO流

       47.Java中组件的层次关系:模块(module)->包(package)
                                ->(类class或接口interface)

       48.非静态方法的调用方式:对象名. 的方式调用;
          静态方法的调用:类名. 的方式调用;

       49.java.lang包下的类可以直接使用,不需要导包;Object类是它下面的类

       50.一个类只有一个字节码文件;
          地址值的组成:全类名(包名+类名)+@+该对象的哈希码的无符号十六进制形式;

       51.Object类中的常见四大方法:
           1)int hashCord()  //返回对象的哈希码值
           2)Class getClass();//返回该调用者的字节码文件对象
           3)String toString();//返回该对象的字节码表示形式;
           4)boolean equals();//比较两对象的地址值,无意义,一般要子类重写;

       52.在实际开发中,用的最多的方法是:
          1)nextInt();接收整数;
          2)nextLine();接收字符串  按回车结束;
          3)hasNextXxx();判断作用,为boolean型;
          4)nextXxx():用于接收下一个指定类型的数据

       53.在实际开发中,String类很常用,所以优化它不在需要new;

       54.在String类中:
          1)static String valueOf();将指定的数据类型转换成字符串;
             它是静态的,所以用类名.的形式调用;


       55.API中的字段就是指成员变量;

       56.一个毫秒值对应一个时间;

       57.Data类:
           1)Data()空参构造一个对象获取当前系统时间,精确到毫秒值;
           2)Data(long)构造一个对象,获取指定时间;   

       58.Calendar类用于操作日期相关信息;
          成员方法:
             1)static Calendar getInstance();根据当前系统时区和
              语言环境获取日历对象;
             2)int get(int field);返回给定日历字段的值;
             3)void set(int field,int value);将给定的日历字段
                设置为指定的值;

       59.基本类型对应的引用类型为包装类;每种基本类型都有对应的包装类,
          注意int的包装类为Interger,char的包装类为Character;有装箱和拆箱
          的概念,jdk5以后有自动拆装箱;

       60.为啥使用包装类:可以将字符串数据转化成对应的基本类型;

       61.包装类的成员方法:static 基本类型 parseXxx(String);

       62.除了Character类无parseXxx方法外,其他包装类都有这个方法;
          因为如果String想转化成char类型,可以用TocharArray()或charAt();

       63.集合:简称集,是用来存储多个元素的容器

       64.list,set,map都是接口,必须有实现类;

       65.使用集合的步骤:
                  1)创建集合对象
                  2)创建元素对象
                  3)将元素对象添加到集合对象中
                  4)遍历集合

       66,API中的E指泛型;

       67.为什么需要增强for循环:简化书组合集合的遍历;
          增强for的格式:for(元素的数据类型 变量名:要遍历的数组或集合对象){};

       68.增强for的底层依赖的是迭代器(Iterator)
          通俗讲增强for就是迭代器的简写形式;

       69.集合有单列集合(Collection)Set,List和双列集合(Map)Map;

       70.迭代器是遍历Collection集合的通用方式,可以再对集合便利的同时
          进行删除和添加的操作,

       71.迭代器的常用方法:
              1)next():返回迭代的下一个元素
    、        2)hasNext():如果任有元素,返回true
          
       72.迭代器的使用步骤:
              1)根据集合对象获取对象的迭代器对象
              2)判断迭代器中是否有元素
              3)如果有,就获取元素
                 String s=(String)list.next();

       73.在使用迭代器时,可能会报并发修改异常(ConcurrentModificationException)
           也就是在遍历的同时添加或删除元素;

       74.列表迭代器则可以对集合遍历的同时添加或删除元素,但是必须通过
          调用列表迭代器(ListIterator)的方法调用

       75.泛型:泛指任意类型,常用于集合类中,他的好处在于类型安全,避免了类型转换。

       76.List<String> list=new ArrayList<String>();表示list集合只能存放string类型的数据。
          jdk7以后可以写成List<String> list=new ArrayList<>();


       77.Collections类是对集合进行操作的工具类。它里边的方法几乎为静态的,所以调用时用类名.的方式调用

       78.Set集合的特点:不可重复和无序hashset集合中用哈希算法,当向Set中添加对象时,首先调用此对象所在类的hashCode()方法,
          计算次对象的哈希值,此哈希值决定了此对象在Set中存放的位置;若此位置没有被存储对象则直接存储,若已有对象则通过对
          象所在类的equals()比较两个对象是否相同,相同则不能被添加。
              总思路:hashCode不同时,则必为不同对象。hashCode相同时,根据equlas()方法判断是否为同一对象。
        在HashSet,HashMap,HashTable中都存在该问题。

       79.为什么Set集合没有“去重”?
          因为Set集合保证元素的唯一性依赖:equals()和hashCord()两个方法
          你没有在子类中重写这两个方法,默认调用的是Object类中的,Object类中的equals()方法默认
          比较的是地址值。
          解决办法:在子类中从写这两个方法

       80.Map集合是双列集合,元素由键值对构成,key可以重复,value不可以重复;
          Map<t1,t2>map=new HashMap<>();
       
       81.向map集合中添加元素用put()方法,Map集合不能直接遍历,要用KeySet()方法拿到所有键的集合,这
          样就将双列集合变成了单列集合

       82.异常(Throwable)的分类:
            1)异常(Exception):可以捕获的问题(通俗讲就是程序员产生的问题)
            2)错误(Error):不可捕获的问题。

       83.处理方式:
          1)捕获,自己处理.   try(尝试代码)...catch(执行解决办法)
             ....finally(可省,写到这儿代码一定会执行,一般用来释放资源)
            特点:程序处理完以后,继续执行
            执行流程:先执行try里边的内容,有,则到catch里边,如果
            没有,则跳到finally
          2)抛出,交给调用者处理   throws

       84.抛出异常:谁调用谁处理,main方法不想处理,可以继续抛给JVM处理
          throws Exception
          特点:异常抛出后,程序不在执行

       85.I/O流简介:(input/output),是Java中用来传输数据的方式。
          按流向分:
                  1)输入流:读数据
                  2)输出流:写数据

          按操作分:
                  1)字节流:以字节为单位操作数据
                       1)InputStream :字节输入流的顶层抽象类
                            1)FileInputStream:普通的字节输入流
                            2)BufferedInputStream:高效的字节输入流

                       2)OutputStream:字节输出流的顶层抽象类
                            1)FileOutputStream:普通的字节输出流
                            2)BufferedOutputStream:高效的字节输出流

                  2)字符流:以字符为单位操作数据
                       1)Reader:字符输入流的顶层父类
                            1)FileReader:普通的字符输入流
                            2)BufferedReader:高效的字符输入流
     
                       2)Writer:字符输出流的顶层父类
                            1)FileWriter:普通的字符输出流
                            2)BufferedWriter:高效的字符输出流
     
       86.File类是用来创建文件夹或文件的,说白了,就是处理路径
          它里边的mkdir()方法可以创建单级或多级目录(make directory)
          构造方法:
                 1)File(String pathname)
                 2)File(String parent,String child)
                 3)File(File parent,String child)


       87.Java中路径的划分:
                  1)绝对路径:以盘符开头,是固定的路径
                  2)相对路径:相对于当前项目来讲的路径

       88.File类的获取功能:list():获取指定目录下文件(夹)名称数组
                            listFile():获取指定目录下文件(夹)File数组


       89.I/O流处理完后要释放资源,用close()方法关闭

       90.IO流拷贝文件:
              1:创建字符流输入对象,关联数据源文件,
              2:创建字符流输出对象,关联目的地文件
              3:定义变量,接收读取的内容
              4:循环读取
              5:释放资源
              6:如果目的地文件不存在,系统自动生成;

       91.字符流拷贝文件的标准代码:
              1)BufferedReader br=new BufferedReader(new FileReader("路径"))
              2)BufferedWriter br=new BufferedWriter(new FileWriter("路径"))

       92.在缓冲输入输出流类中,ReadLine()为读取一行字符,如果没值了,换回null
                NewLine()为Java提供的在任何平台使用的换行方法

       93.字符流只能应用于纯文本文件,拷贝其他(音频,视频,图片等)用字节流

       94.字节缓冲流的特点:即使你没有定义字符数组,它在下边也会以字符数组的形式来执行,也称为高效缓冲字节流
          用法同上

       95.反射:在Java中,反射指的是在程序运行期间根据类的字节码文件对象
             来获取类中成员并使用的一项技术
         什么是反射:在程序运行时分析类的一种能力
       普通的程序先在后缀名以.java结尾的源文件中编写程序,然后编译成后缀名以.class结尾的字节码文件中,此时,就可以
         通过对象名.的形式调用方法反射就是反过来

       96.类加载器(ClassLoader):负责将类的字节码文件(.class文件)加载到内存中,并生成相应的Class文件
          当你第一次使用类中的成员时,类加载器将此类的字节码文件加载到内存中,且只加载一次,如果在使用此
          类成员,将不再加载
       
       97.一个源文件(.java)对应一个字节码文件(.class)

       98.获取Class对象的三种方式:
                1)Object类下的getClass()方法
                2)类的静态属性Class()
                3)Class类的静态方法Class name=Class.forName(“类的正名”)
                补充:类的正名:包名+类名

       99.构造器对象(Constractor)
          构造器类(Constractor)的常用方法有:
               1)getConstractor():获取类的构造器对象
               2)getName():获取构造器对象的所属类
               3)NewInstance():通过构造器对象生成此类的一个对象
                             
       100.通过反射的方式获取构造器并使用的步骤:
            1)先通过全类名获取该类对应的字节码文件对象,也就是Class
            2)通过Class来获取该类的构造器对象
            3)调用newInstance()方法获取该类的对象
            4)打印结果
     
       101.通过反射的方式获取成员方法并使用的步骤:
            1)先通过全类名获取该类对应的字节码文件对象,也就是Class
            2)通过Class对象来创建构造器对象,然后创建该类对象
            3)通过Class来获取该类的成员方法(Method)对象,注意Method me=clazz1.getMethod("show2",int.class);
            4)通过Method对象调用invoke()方法;

       102.通过反射的方式获取成员属性并使用的步骤:
            1)先通过全类名获取该类对应的字节码文件对象,也就是Class
            2)通过Class对象来创建构造器对象,然后创建该类对象
            3)通过Class来获取该类的成员变量对象(Field)
            4)通过Field对象的Set()方法设置成员变量的值
              注意:引用私有变量时,要调用setAccseeible()方法;

       103.什么时候用父类,什么时候用接口?
           是上下级的递推关系,针对某一块项目时用父类
           面向各类项目时,用接口

      104.Java中通过System.in和System.out对象分别和键盘与显示器产生关联而完成数据的输入和输出;
      105.Java运行工具eclipse常用快捷键:F11是切换至调试模式,F6是断点逐句调试,




  • 相关阅读:
    产品分析之核心功能篇
    激励CEO们最好的办法就是鼓励他们不要停止思考
    Javascript的一些经验总结
    微信为什么跟你想要的不一样?
    互联网思维西游记漫画分享
    交互设计与人类行为习惯的一些思考
    说说三四月的app审核中的几个坑
    程序员的玻璃心
    常用网站日志分析软件使用总结
    在你决定从事iOS开发前需要清楚的几个问题
  • 原文地址:https://www.cnblogs.com/1877chl/p/12061520.html
Copyright © 2011-2022 走看看