java基础讲解1

java枚举   反射   动态代理  file操作  设计模式


1:java语言

      计算机语言分为机器语言 汇编语言 高级语言

      机器语言二进制编码 机器直接识别的语言

      汇编语言采用英文缩写的标识符

      高级语言接近人类语言的自然语言 例如java

2:javase javaee javame

3:jdk java开发工具包  包括  

      开发工具(java编译器 java运行工具 jre java运行环境)

       源代码  api

       公共jre java运行环境  但是开发工具已经有jre所以不需要

      jdk目录讲解

        bin:放置一些可执行程序  javac.exe 编译器  java.exe java运行工具

                 jar.exe 打包工具 javadoc.exe 文档生成工具 

        db: 小型的数据库 

        jre:java虚拟机 运行时类包,java应用启动器 bin目录,但不包含开发环境的

               开发工具。

        include:由于jdk是通过c c++实现的  因此启动时需要一些c语言的头文件

                       该目录就用于存放这些头目录。

        src.zip就是核心源代码

        

        javac.exe 将java文件编译为java字节码文件  .java文件编译为.class文件 字节码文         件,

        java.exe就是java运行工具,他会启动一个java虚拟机,jvm进程,java虚拟机相当         一个虚拟的操作系统,专门负责运行java编译器生成的字节码文件

    

        简单的java程序运行如下:

        java基础讲解1

         java代码如下:

         class HelloWord {

          public static void main(String []args){


          System.out.println("再一次来个java程序");


           }
         }


        环境变量的配置:详见下图:

       java基础讲解1

        

       java基础讲解1  

    

       java基础讲解1

  



标识符:可以由字母 下划线 美元标识  数字组成  也可以是汉字

             但是第一个不可是数字  不可以是关键字  注意尽量不要使用汉字  因为不同

             的编译环境,字符编码变化会乱码 

变量 也可以是汉字  还是不建议


整数类型:

  byte 8位  short 16  int 32  long 64

 8位一个字节

变量赋值  超出取值范围会报错

系统默认为int

八进制 0开头

十六进制 0x开头 0X开头


 char字符类型  16位 两个字节  单引号表示 ‘s’


转义字符: 使用反斜杠 \开头  


java基础讲解1


switch语句判断  在jdk1.6的时候  switch的表达式的值必须是整形或者字符型

但是在jdk1.7的时候 值还可以是字符串。

符合switch的条件时  不要使用if else 这样效率更高


初始化一维数组:

1:在创建的时候就初始化数据

2:在初始化的时候为数组指定大小

对数组进行操作的工具类arrays


Date类是java中的日期类  表示的是瞬间的时间 默认获取当前时间


字符串的值在创建之后不可以修改的意思是:

创建字符串的时候:我们会在内存里面创建一个字符串abc对象  将其保存在内存里面

我们字符串只是指向这个内存块  所以为值为abc  加入对字符串进行操作相当于在内存里面又创建了新的字符串对象,然后字符串又指向这个新的对象。

 所以字符串的值在创建之后不可以更改  随后不再使用的时候就被内存回收了

 

StringBuffer  可变字符串 线程安全  加有同步锁

StringBuilder 同上  但是线程不安全 没有同步锁

String    StringBuffer   StringBuilder区别

String  每次修改都会在内存中创建一个对象  所以用在数据操作少的场景下

StringBuffer 修改数据的时候 不会创建对象  只会修改当前对象  另外是线程安全

                       所以使用场景就是多线程 数据操作多的时候

StringBuilder 修改数据不会创建对象  只修改当前对象  另外是线程不安全  所以尽量在单线程里面使用


常规解释:就是执行字符串连接  添加  这个时候就使用 StringBuffer  StringBuilder


类:对象讲解:

Test test=new Test()

test是引用  只是对象的一个引用  引用只是存放一个对象的内存地址


对象的销毁:两种场景下将会被销毁

   1:对象超过其作用范围

   2:将对象置为null

Object类里面有这个api   finalize()这个api是在对象被垃圾回收器回收的时候

会调用的api,所以想尝试一下看看对象是否被回收可以重写这个方法。

System.GC强制进行垃圾回收。


3:接口实现类:

class Person implements Animal{
    @Override
    public void eatFood() {
        Log.d(TAG, "eatFood: 肉肉肉");
    }
    @Override
    public void work() {
        Log.d(TAG, "work: 上班上班上班");
    }
}

class Dog implements Animal{
    @Override
    public void eatFood() {
        Log.d(TAG, "eatFood: ");
    }
    @Override
    public void work() {
        Log.d(TAG, "work: ");
    }
}

interface  Animal{
    void eatFood();
    void work();
}
animal=new Person();
animal.eatFood();
animal.work();
animal=new Dog();
animal.eatFood();
animal.work();

接口的实现思想!