A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© bugaipaoqiziji 中级黑马   /  2018-4-6 22:58  /  1269 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一.Java语言基础
1.Java语言特点
   *简单性     *解释性     *面向对象     *高性能     *分布式处理     *多线程   
   *健壮性     *动态       *结构中立     *安全性     *开源           *跨平台
2.关键字
   *什么是关键字
        *被Java语言赋予特定含义的单词
   *关键字特点
        *组成关键字的字母全部小写
3.标识符
   *标识符组成规则
        *英文大小写字母/数字字符/$和_
        *不能使用关键字/不能数字开头
   *常见命名规则(重点!!!):
        * 包:把包理解成我们的文件夹,一般是公司域名倒着写,com.itheima
        * 类或者接口
                如果是一个单词,首字母大写
                如果是多个单词,每个单词的首字母都大写
        * 方法或者变量
                如果是一个单词,全部字母小写
                如果是多个单词,从第二个单词开始首字母大写
        * 常量
                如果是一个单词,全部字母大写
                如果是多个单词,每个单词之间用_分开
4.注释
   *单行
        //
   *多行
        /*
        */
   *文档注释
        /**
        */
5.数据类型
   *整数型
        byte        占1个字节        -128到127
        short        占2个字节        -2^15~2^15-1
        int        占4个字节        -2^31~2^31-1
        long        占8个字节        -2^63~2^63-1
   *浮点型(小数型)
        float        占4个字节        -3.403E38~3.403E38
        double        占8个字节        -1.798E308~1.798E308
   *字符型
        char        占2个字节        0-65535
   *布尔型        boolean true和false
二.面向对象
面向对象三大特性:封装/继承/多态
1继承与多态
1.1.覆盖父类方法的规则
        *参数必须要一样,且返回类型必须要兼容
        *不能降低方法的存取权限
1.2.方法的重写
        *返回类型可以不同
        *不能只改变返回类型
        *可以更改存取权限,子类重写方法的权限必须大于等于父类方法的权限
*不能重写父类私有的方法
        *在子父类当中,子类的方法和父类的完全一样,子类重写了父类的方法(覆盖),当子类重写了父类的方法之后,使用子类对象调用的就是子类的方法。(方法重写有两个必备条件:1.必须两个类要有继承关系。2.子类中的方法的方法名,参数列表,返回值类型都要和父类中的这个方法相同。)
        *方法的上面加上@Override就表示这是一个重写的方法
1.3.方法的重载和重写的区别
        *重载:在同一个类中,方法名相同,参数列表不同。与返回值无关。
        *重写:1.必须两个类要有继承关系。2.子类中的方法的方法名,参数列表,返回值类型都要和父类中的这个方法相同。
1.4.继承的优缺点
优点:
        *提高了代码的复用性
        *提高了代码的可维护性
        *让类和类产生关系,是多态的前提
缺点:
        *类的耦合性增强了
开发的原则:高内聚低耦合,内聚:就是自己完成某件事情的能力,耦合:类与类的关系
1.5..多态的前提
        *子父类的继承关系
        *方法的重写
        *父类引用指向子类对象
1.6.多态的成员特点
        *成员变量  编译时看的是左边,运行时看的左边
        *成员方法  编译时看的是左边,运行时看右边
1.7.多态的优缺点
          优点:可以提高代码的复用性(多态前提所保证的),提高代码的可扩展性(把方法的参数写成父类类型,这样我们在调用的时候可以传任意的子类对象,就不需要每多一个子类就要重写改代码)
        缺点:无法直接访问子类特有的成员
2.修饰符
2.1.final
*final就是修饰符,可以用于修饰类、成员方法和成员变量。
*final所修饰的类:不能被继承,不能有子类
*final所修饰的方法:不能被重写
*final所修饰的变量:是不可以修改的,是常量
2.2.static
        *被static修饰的东西会被该类的所有对象共享。
        *调用:被static修饰的东西可以使用类名调用,也可以使用对象名调用。
        *随着类的加载而加载
        *静态的加载优先于对象。
        *静态的只能调用静态的,非静态的既能调用静态成员也可以调用非静态成员。
3.接口与抽象
3.1抽象
*如果不想让某个类被初始化,就以abstract关键词将它标记为抽象的.
*抽象的类可以带有抽象和非抽象的方法.
*如果类带有抽象的方法,则此类必定标识为抽象.
*抽象的方法没有内容,它的声明以分号结束.
*抽象的方法必须在具体的类中运行.
*抽象类中可以没有抽象方法
*抽象类不能创建对象(不能实例化)
*抽象类和类的关系也是继承
*一个类继承了抽象类要么重写所有的抽象方法,要么他自己是抽象类
*Java所有的类都是Object直接或者间接的子类.
*方法可以声明Object的参数或返回类型.
*不管实际上所引用的对象是什么类型,只有在引用变量的类型就是带有某方法的类型是才能调用该方法.
*Object引用变量在没有类型转换的情况下不能赋值给其他类型,若堆上的对象类型与所要转换的类型不兼容,则此转换会在执行期间产生异常.
*从ArrayList<Object>取出来的对象只能被Object引用,不然就要用类型转换来改变.
3.2接口
        *接口里所有的方法全是抽象方法,接口和抽象类一样不能实例化。
*接口就好像100%纯天然抽象类.
*class可以实现多个接口.
*接口和抽象类的区别
共性:不断的抽取,抽取出抽象的概念
区别1:与类的关系
      类与接口是实现的关系,而且是多实现,一个类可以实现多个接口
      类与抽象类是继承关系,java中的继承是单一继承,一个类只能有一个父类,Java中的继承是多层继承
区别2:成员
       成员变量:抽象类可以有成员变量,也可以有常量
                 接口只能有常量
       成员方法:抽象类可以有抽象方法,可以有非抽象方法
                 接口只能有抽象方法,而且方法有默认修饰符 public abstract
       构造方法:抽象类有构造方法的
                 接口没有构造方法
4.生命周期
*对象的生命周期要看引用变量的生命周期而定
        *局部变量只会存活在声明该变量的方法中
        *实例变量的寿命与对象相同.

三.异常处理
        *方法可在运行期间遇到问题抛出异常
        *异常是Exception类型的对象
        *编译器不会注意RuntimeException类型异常
        *方法可以用throw关键词抛出异常对象
        throw new FileIsTooSmallException();
        *可能会抛出异常的方法必须声明成throws Exception
        *如果要处理异常,就把调用包在try/catch块zhong
        *如果不打算处理异常,还是可以正式地将异常给ducking来通过编译
        *catch与finally不能没有try
        *try与catch之间不能有程序
        *try一定要有catch或finally
        *只带有finally的try必须要声明异常
四.事件与图形
1.事件
        *GUI从创建window开始,通常会使用
        JFrame frame = new JFrame();
        *你可以加入按钮/文字字段等组件
        frame.getContentPane().add(button);
        *JFrame与其他组件不同,不能直接加上组件,要用它的content pane
        *要显示window,你得指定尺寸和执行显示动作
                frame.setSize(300,300);
                frame.setVisible(true);
        *监听GUI事件才能知道用户对接口做了什么事情
        *要对事件源注册就调用事件源的注册方法,它的方法一定是add<EventType>Listener这种button.addActionListenner(this);
        *通过实现所有的事件处理方法来实现监听接口.对ctionEventer而言
        public void actionPerformed(ActionEvent event) {button.setText("Clicked!");}
2.图形
*二维图形可以直接画在图形组件上
*.gif与.jpeg文件可以直接放在组件上
*用JPanel的子类覆盖paintComponent()方法绘制自定义的图形
*paintComponent()方法会由GUI系统调用,你不可以自己调用,它的参数是个你不能自己创建的Graphics对象
*Graphics对象有些你可以调用的方法,像是
graphics.setColor(Color.blue);        g.fillRect(20,50,100,120);
*使用Image来绘制.jpg
Image image = new ImageIcon("pic.jpg").getImage();
g.drawImage(image,3,4,this);
*paintComponent()的Graphics参数实际上是个Graphics2D
*调用Graphics2D的方法前,你必须把Graphics对象转换为Graphics2D
Graphics2D g2d = (Graphics2D) g;
五.IO流
1.字符流和字节流
字节流和字符流的区别:
读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。
处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据。
字节流:一次读入或读出是8位二进制。
字符流:一次读入或读出是16位二进制。
设备上的数据无论是图片或者视频,文字,它们都以二进制存储的。二进制的最终都是以一个8位为数据单元进行体现,所以计算机中的最小数据单元就是字节。意味着,字节流可以处理设备上的所有数据,所以字节流一样可以处理字符数据。
结论:只要是处理纯文本数据,就优先考虑使用字符流。 除此之外都使用字节流。
2.输入流和输出流
输入流只能进行读操作,输出流只能进行写操作,程序中需要根据待传输数据的不同特性而使用不同的流。
输入字节流 InputStream是所有的输入字节流的父类,它是一个抽象类。
输出字节流 OutputStream是所有的输出字节流的父类,它是一个抽象类。
输入流:InputStream或者Reader:从文件中读到程序中;
输出流:OutputStream或者Writer:从程序中输出到文件中;
3.常用的节点流
父 类 :InputStream 、OutputStream、 Reader、 Writer
文 件 :FileInputStream 、 FileOutputStrean 、FileReader 、FileWriter
字符串 :StringReader、 StringWriter
4.常用的处理流
缓冲流:BufferedInputStrean 、BufferedOutputStream、 BufferedReader、 BufferedWriter 增加缓冲功能,避免频繁读写硬盘。
转换流:InputStreamReader 、OutputStreamReader实现字节流和字符流之间的转换。
数据流: DataInputStream 、DataOutputStream 等-提供将基础数据类型写入到文件中,或者读取出来。

1 个回复

倒序浏览
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马