Java问题小结

作者: 每天好鑫晴 | 来源:发表于2018-12-09 10:51 被阅读23次

    1.构造方法和普通方法的区别

    (1)构造方法的名字必须与定义他的类名完全相同,没有返回值类型,而且没有void,

    (2)类中必定有构造方法,如果不写,系统自动添加无参构造方法,接口不允许被实例化,故接口中没有构造方法

    (3)不能被static、final、synchronized、abstract和native修饰

    (4)构造方法在初始化对象的时候自动调用,一般不能显式的直接调用

    当同一个类存在多个构造方法的时候,Java编译系统会自动按照初始化时

    最后面括号的参数个数以及参数类型来自动一一对应。完成构造函数的调用

    (5)构造方法分为两种:无参构造和有参构造

    (6)构造方法可以被重载。没有参数的构造方法为默认构造方法,与一般的方法一样,构造方法可以进行任何活动,但是经常将他设计为进行各种初始化活动

    3.return ,break, continue的区别是什么

    return跳出整个方法体

    break结束整个循环

    continue结束当次循环

    答:http://www.cnblogs.com/yanenshen/p/4230262.html

    4.绝对路径和相对路径的区别

    绝对路径是在硬盘上相对的储存位置

    相对路径是相当于某个文件夹的储存位置

    5.接口和适配器

    适配器继承接口,如果用接口的话,需要重写里面的所有方法,如果是适配器,就可以需要哪个重写哪个

    7.线程的几种实现方式

    1.通过继承Thread类实现一个线程

    [java] view plain copy

    public class java_thread extends Thread{  

        public static void main(String args[])  

        {  

            (new java_thread()).start();  

            System.out.println("main thread run ");  

        }  

        public synchronized  void run()  

        {  

            System.out.println("sub thread run ");  

        }  

    2.通过实现Runnable接口实现一个线程

    public class java_thread implements Runnable{  

        public static void main(String args[])  

        {  

            (new Thread(new java_thread())).start();  

            System.out.println("main thread run ");  

        }  

        public void run()  

        {  

            System.out.println("sub thread run ");  

        }  

    }  

    3.直接在函数体中使用

    void java_thread()  

    {  

         Thread t = new Thread(new Runnable(){  

                public void run(){  

                mSoundPoolMap.put(index, mSoundPool.load(filePath, index));  

                getThis().LoadMediaComplete();  

                }});  

            t.start();  

    线程开启的方式,有start和调用线程 里面的run()方法

    8.匿名调用和静态调用

    匿名调用:new 类名();

    静态调用:有Static,

    10.ArrayList 和List 的区别

    ListArray继承并实现了List

    所以List不能被构造,ListArray可以被构造

    List list =new List();//是错误用法

    List list = new Array

    而ArrayList list=new ArrayList();创建一对象则保留了ArrayList的所有属性

    11.随机数方法

    random本身的范围是[0,1)

    12.内部类和匿名内部类

    14.i++和++i

    i++先执行i的运算后++,即先运算后赋值

    ++i为先赋值,后执行关于i的运算

    15.双if语句和if else语句之间的区别

        双if语句每个都要判断,相互之间没有影响

        if    else if 语句中if 和else if之间是有联系的,当不满足if中的条件

        的时候,就去执行else if,如果if中的条件已经满足了,就不会再去判断else if中的条件了

    16.设置一个关闭提醒

    17.主方法括号里面的东西是什么意思

    声明一个字符型的数组

    18.权限修饰符

    权限修饰符有四个,权限由高到低依次是public 、protect、default、private

      访问权限   类   包  子类  其他包

        public     ∨   ∨   ∨     ∨

        protect    ∨   ∨   ∨     ×

        default    ∨   ∨   ×     ×

        private    ∨   ×   ×     ×

    19.实现监听的几种方式

    1.匿名监听

    public Button login;

    @Override

        login =(Button)findViewById(R.id.bt1);

        //匿名监听

        login.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                Toast.makeText(LoginActivity.this, "这是", Toast.LENGTH_SHORT).show();

            }

        });

    2.本类监听

    继承View.OnClickListener接口、实现View.OnClickListener中的SetOnClickListener

    3.布局监听

    实例:重写功能

    android:onClick=”reSet”

    JAVA中写

    public void reSet(View v){

        user.setText("");

        pwd.setText("");

    }

    4.内部类实现监听

    public Button exit;

    exit=(Button)findViewById(R.id.bt4);

    exit.setOnClickListener(new Bt4_clicklisn());

    public  class  Bt4_clicklisn implements View.OnClickListener{

        @Override

        public void onClick(View v) {

            finish();

        }

    }

    原文:https://blog.csdn.net/woainijinying/article/details/52081295

    20.重载和重写

    方法重载是指同一个类中的多个方法具有相同的名字,但这些方法具有不同的参数列表,即参数的数量或者是参数类型不能完全相同

    方法重写是存在于子父类之间的,子类定义的方法与父类中的方法具有相同的方法名字,相同的参数表和相同的返回类型

    注意:子类中不能重写父类里面的final方法

    子类中必须重写父类中的abstract方法

    21.JOptionPane的使用

    22.this的两个作用

    调用当前对象

    作为参数返回

    (1)可以用this调用另一个构造器,但是却不能调用两个;

      (2)必须将构造器的调用放在方法的起始处,否则编译器会报错。

    23.返回值

    古月金帛三寿,想知道上海的某件事情,他会问溫家宝,溫家宝会问俞正声,俞正声问手下人,手下人把结果告诉俞正声,俞正声把结果告诉溫家宝,溫家宝把结果告诉古月金帛三寿。(网上找的这段文字十分精辟啊)

    void hu() {

      System.out.println(wen());

    }

    String wen() {

      return yu();

    }

    String yu() {

      return shouxiaren();

    }

    String shouxiaren() {

      return "hello";

    }

    24.equals和==的区别

     1)对于==,如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;

        如果作用于引用类型的变量,则比较的是所指向的对象的地址

     2)对于equals方法,注意:equals方法不能作用于基本数据类型的变量

        如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;

        诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。

    25.转义符的使用

    \f换行

    \b退格

    \n换行

    \r回车

    \t横向跳格

    \\反斜线字符,输出一个反斜杠

    \'单引号字符,输出一个单引号

    \"双引号字符

    \uxxxx1~4位十六进制(XXXX)所表示的unicude字符

    \ddd1~3位八进制(ddd)所表示的unicude字符,范围在八进制的000~377之间

    26.Java中的默认布局,局部管理

    AWT提供了5种布局管理器类:

    FlowLayout(流式布局管理器)、BorderLayout(边界式布局管理器)、GridLayout(网格式布局管理器)、GirdBagLayout(网格包布局管理器)、CardLayout(卡片式布局管理器)

    1.FlowLayout(流式布局管理器)是Panel类的布局管理器

    该布局管理器对组件逐行定位,行内从左到右,一行排满后换行。可以设定不同的间距以及对齐方式

    默认的对齐方式是居中。

    2.BorderLayout(边界式布局管理器)是Frame类的默认布局管理器,BorderLayout将整个容器的布局划分成

    东(EAST)西(WEST)南(SOUTH)北(NORTH)中(CENTER)

    如果不指定组件的 加入部位,则默认加入到CENTER区

    每个区域只能加入一个组件,如果加入多个,则先加入的会被覆盖

    3.GridLayout布局管理器将空间划分成规则的 矩形网格,每个单元格 区域大小相等。组件被添加到每个单元格中,先从左到右布满一行后换行,再从上到下

    在GridLayout构造方法中指定分割的行数和列数

    如果想在 Frame想加入 Panel的布局,那么需要首先将Frame的布局方式清空

      布局管理器的总结:Frame是一个顶级窗口,Frame的缺省布局管理器为BorderLayout。所以如果直接往Frame里面放一个Panel,他将会把Panel放大居中。如果用户需要亲自设置组件大小或位置,则应取消容器的布局管理器,方法为 setLayout(null);

    27.抛出异常

    方式一:

    throws,抛出具体代码中的异常,这种方式编译器都会提示,举例:

    public static void main(String[] args) throws IOException

    方式二:try{}catch{}抛出异常

    在try中放入待执行代码,如果程序正常运行就会执行try中的代码,如果出现异常,就会执行catch中的代码,当然,try后面可以跟多个catch,举例:

                    try {

                        br.close();

                    } catch (IOException e2) {

                        System.out.println("用户释放资源失败");

                    }  ..

    注意:父类没有抛出异常,子类是不能抛出异常的

    try catch抛出异常的时候,异常范围小的放在前面,异常范围大的放在后面

            try{

                      //待执行的代码        } catch (FileNotFoundException e) {

                System.out.println("找不到文件");

            } catch (IOException e) {

                System.out.println("IO操作失败");

            }   

    相关文章

      网友评论

        本文标题:Java问题小结

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