第79节:Java中一些要点

作者: 魔王哪吒 | 来源:发表于2019-01-29 23:08 被阅读9次
    标题图

    第79节:Java中一些要点

    前言

    一些知识点忘了没,可以通过一个点引出什么内容呢?做出自己的思维导图,看看自己到了哪一步了呢

    内容

    如果有人问jre,jdk,jvm是什么,你怎么回答呢?

    jre的英文是java runtime environment ,包含有java虚拟机,库函数,java运行应用程序和applet的要的文件.java 运行环境功能主要有加载代码,校验代码,执行代码.jre是java运行时环境,有jvm和其他一些java核心api,只要有jre就可以运行java程序.jre含jvm,运行java程序需要jre

    jdk的英文是java development kit包含jre,编译器和调式器等.jdk是jre的超集.要进行开发java程序需要安装jdk.

    jvm是一种规范,是一个虚拟的用于执行字节码的计算机.jvm是负责java字节码解释运行的,jvm实现了跨平台,可移植的功能.

    一次编译,随处运行

    源程序(.java文件)->java编译器->字节码(.class文件)

    jre,java运行环境,类装载器,字节码校验器,解释器.

    什么是变量?

    变量是用来操作存储空间中的数据的,是代指存储空间,位置一定,存储空间中的数据类型不确定,就有了数据类型,放置的值也不确定.类型可以是基本类型,也可以是引用类型.

    变量:局部变量(方法或语句块内部定义的变量),实例变量(方法外部,类的内部定义的变量),静态变量(使用static).

    那么讲了java的变量,那么讲究数据类型,在java中,数据类型分为两大类,一为基本数据类型,二位引用数据类型.

    数据类型的定义了8种基本数据类型,我们可以分为3类来了解,一种为逻辑类型,一种的文本类型,一种是数值类型:

    逻辑类型记住是boolean就行,文本类型记住是char类型就行,而数值类型记住顺序一下子就可以记住,byte,short,int,long,foloat,double,从小到大的顺序.

    类型类型分基本数据类型和引用数据类型

    基本数据类型分,数值型,字符型,布尔型.

    数值型分,整数类型和浮点类型.那么整数类型有byte,short,int,long,浮点类型有float,double.

    float为单精度类型,double为双精度类型.

    字符型的有char. 布尔型的有boolean.

    boolean类型有两个值为true和false.用来判断逻辑条件的,一般用于程序流程控制.

    字符型,单引号用来表示字符类型的常量,'a'为一个字符.char类型可以在unicode编码表中的 字符.char可以用来整数运算.

    引用数据类型分,类class,接口interface,数组

    注意:引用类型指的就是对象的地址

    类型 占用存储空间 表数范围
    byte 1字节 -128到127
    short 2字节 -215到214
    int 4字节
    long 8字节
    float 4字节
    double 8字节

    进制数

    十进制整数,八进制整数(以 0 开头),十六进制数(以0x 或 0X 开头).

    字符集

    iso8859-1->big5,gb2312,unicode  gb2312->gbk
    

    方法:定义类和对象的动态行为特征的抽象

    运算符

    算术运算符: +,-,*,/,%,++,--
    关系运算符: >,<,>=,<=,==,!= instanceof
    逻辑运算符: &&,||,!
    位运算符: &,|,^,~ , >>,<<,>>>
    

    面向对象和面向过程

    面向过程的思维模式是比较简单的线性思维.
    面向对象的思维模式适合处理复杂的问题.

    构造器用于构造类的实例.
    构造器的作用就是初始化一些数据.

    static

    用static声明的成员变量为静态成员变量,用static声明的方法为静态方法.

    内存

    栈:局部变量放在栈中,栈是一种连续的内存空间,由系统分配.

    堆:通过new的对象都在,是不连续的内存空间,速度慢.

    方法区:用来存放程序中不变和唯一的内容,方法区也是堆,用于存放类的代码信息,static变量,和常量池.

    // 常量池
    public class Student {
     String name;
     int age;
     public void study(){
      System.out.println("学习");
     }
     public void sayHello(String sname){
      System.out.println("大帅哥");
     }
    } 
    
    public class Test{
     public static void main(String[] args){
      // 类加载器Class Loader
      // 堆中创建一个student对象
      Student s1 = new Student();
     // 创建字符串常量,放入常量池中
     s1.name = "大帅哥";
     // 通过s1找到student对象
     s1.study();
     }
    }
    

    小结

    栈自动分配连续的内存空间,后进先出,放入的都是局部变量,堆是不连续的内存空间,不像栈按照子弹夹一样,方法区也是堆,里面存放的都是类的代码信息,static 变量和常量池.

    抽象方法

    抽象方法用abstract修饰,没有方法体,需要用子类来重写

    记住:抽象类不能进行实例化,抽象类可以有属性,方法和构造方法,但构造方法不能用new实例,需要用来被子类调用的.抽象类是用来被继承的,抽象方法必须由子类实现.

    定义接口:

    格式:

    public或默认 interface 接口名 extends (接口可以多)
    {
     public static final 常量
     public abstract 方法
    }
    

    内部类

    一个类放在另一个类的内部定义为内部类.

    内部类用来干嘛的?

    提供更好的封装,让外部类直接进行访问,内部类可以访问外部类的私有属性.而外部类不能访问内部类的内部属性.

    内部类分:匿名内部类,成员内部类,非静态内部类

    非静态内部类可以使用外部类的成员,而外部类不能访问非静态内部类的成员

    静态成员不能访问非静态成员

    new InnerClass()
    
    Outer.inner name = OuterObject.new Inner()
    
    this.变量名
    
    外部类名.this.变量名
    

    访问修饰符:

    private在同一个类中
    default在同一个类中,在同一个包中
    protected在同一个类中,在同一个包中,在子类中
    public 公共都可以

    多态

    指不同类的对象对同一件事情进行不同的效果反应

    abstract class Student{
     public abstract void study();
    }
    // 1
    class Student1 extends Student {
     @Override
     public void study(){
      System.out.println("学习1");
     }
    }
    class Student2 extends Student {
     @Override
     public void study(){
      System.out.println("学习2");
     }
    }
    

    多态的特点:

    继承,有方法的重写,父类引用指向子类对象引用

    基本数据类型的包装类

    基本数据类型 包装类
    byte Byte
    short Short
    char Character
    int Integer
    long Long
    float Float
    double Double
    boolean Boolean

    StringBuilder 与 StringBuffer 区别

    StringBuilder 可变字符串,线程不太安全,效率高
    StringBuffer 可变字符串,线程安全,效率低
    String 不可变字符串,final修饰了string类,所以不能被继承,修饰了char value[],所以字符串的值不可以改变,记住final没有修饰string的引用,就会存在内存空间的浪费.

    string

    String name = "大哥";
    

    io流

    io流的分类为输入流和输出流

    按数据分

    字节流是按照二进制,字符流是按照文本文件.

    字节流:
    
    输入流 InputStream 
    read(byte[] b)
    read(byte[] b, int off, int len)
    FileInputStream()
    InputStream FileInputStream
    
    输出流:OutputStream
    write(byte[] b)
    write(byte[] b, int off, int len) 
    FileOutputStream
    OutputStream FileOutputStream
    
    字符流
    
    输入流 Reader
    read(char[] c)
    read(char[] c, int off, int len) 
    FileReader()
    Reader FileReader
    
    输出流 Writer
    write(char[] c)
    write(char[] c, int off, int len) 
    FileWriter()
    Writer FileWriter
    
    处理流
    
    缓冲流
    
    字节缓冲流
    BufferedInputStream
    BufferedOutputStream
    
    字符缓冲流
    BufferedReader
    BufferedWriter
    
    输入流:InputStream
    输出流:OutputStream
    
    字节流搞定一切
    BufferedInputStream -> FileInputStream -> File
    BufferedOutputStream -> FileOutputStream -> File
    
    通过解码
    InputStreamReader
    OutputStreamWriter
    
    通过解码变字符流,只能处理纯文本
    
    BufferedReader -> FileReader -> File
    BufferedWriter -> FileWriter -> File
    
    Reader Writer
    

    线程

    Thread
    sleep()
    yield()
    stop()
    start()
    interrpet()
    ...
    

    结言

    一些你需要重新复习的一些基础内容,写出自己的思维导图看看哦!

    达叔小生:往后余生,唯独有你
    You and me, we are family !
    90后帅气小伙,良好的开发习惯;独立思考的能力;主动并且善于沟通
    简书博客: 达叔小生
    https://www.jianshu.com/u/c785ece603d1

    结语

    • 下面我将继续对 其他知识 深入讲解 ,有兴趣可以继续关注
    • 小礼物走一走 or 点赞

    相关文章

      网友评论

        本文标题:第79节:Java中一些要点

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