您当前的位置: 首页 >  Java

Kevin-Dev

暂无认证

  • 2浏览

    0关注

    544博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【Android -- 基础】Java 知识点(入门篇)

Kevin-Dev 发布时间:2016-11-24 19:19:11 ,浏览量:2

前言

本文主要是复习一下 Java 基础中的知识点总结。java 的知识点非常的多,它更像是一个成熟稳重的中年大叔。有些我们自以为理解了的知识点,其实只是停留在了他的表面之上,并没有深入了解到其实现原理。

纸上得来终觉浅,绝知此事要躬行。

概述

1. Java 之父 Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 面向对象程序设计语言和 Java 平台的总称。由 James Gosling 和同事们共同研发,并在 1995 年正式推出。

2. Java 三大体系

  • javaSE,标准版,各应用平台的基础,桌面开发和低端商务应用的解决方案。
  • javaEE,企业版,以企业为环境而开发应用程序的解决方案。
  • javaME,微型版,致力于消费产品和嵌入式设备的最佳方案。

3. Java 的特性

  • 一种面向对象的编程语言。
  • 一种与平台无关的语言(根据JVM实现的)。
  • 一种健壮性语言。
  • 具有较高的安全性。

4. GC、JDK 和 JRE

  • GC:垃圾回收器 在 java 运行过程中自动启动,程序员无法干预。
  • JDK:java开发工具包 先编译(编译器javec),后运行(解释器java)
  • JRE:java运行环境 加载代码(加载器),校验代码(校验器),执行代码(解释器)

5. Java 虚拟机 java 虚拟机实际上只是一层接口,一层 Java 程序和操作系统通讯的接口。java 文件编译生成 class 文件,而 java 虚拟机就是这些 class 文件能够在上面运行的一个平台,你把 class 文件看成一个软件,java虚拟机就是这个软件可以运行的操作系统。

环境变量配置(Windows 10)

1. JDK 下载

官网下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

同意协议后,下载相应 JDK 版本。

2. 在桌面右键此电脑–>选属性–>高级系统设置–>环境变量设置–>系统变量中点新建 变量名:JAVA_HOME 变量值:C:\Program Files\Java\jdk1.8.0_202(你JDK的安装路径)

3. 再次点击新建输入 变量名:CLASSPATH 变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar(需要注意前面有个点)

4. 找到 Path 点编辑,进去之后点新建 在后面添加 %JAVA_HOME%\bin %JAVA_HOME%\jre\bin(注意不需要添加;号,直接另起一行即点击新建添加即可)最后点击确定!

5. 验证 按 win+R 键 输入 cmd 回车 进入 dos,分别输入 java javac 查看安装是否完成,出现如图即安装成功!

面向对象的三大特性

1、封装

作用:提高代码的安全性
1、将属性私有化,并提供对外界的接口( get / set 方法)。
2、用 private 修饰的属性和方法,只能在本类中使用。

2、继承

作用:提高代码的复用性,减少重复代码

    1、子类可以继承父类非私有的属性和方法,不能继承构造方法和私有的属性和方法。

    2、可以综合子类的共同特征来去提炼父亲的类。

    3、子类在继承父类的各种属性和方法时,也可以有自己的属性和方法。

    4、一个子类只能有一个父类,java只能单继承,不能多继承,因为多个类中的方法名相同,方法体不同,不知使用哪个。

    5、一个类继承最顶端叫做基类或者超类,所有的超类叫做object 。

    6、在继承关系中,如果父类没有无参数的构造方法,如何解决?

           1>子类中添加一个和父类构造方法参数列表相同的构造方法,通过super参数传递给父类的构造方法

           2>如果父类允许修改的时候,可以在父类中创建一个无参的构造方法

    7、在继承关系中,代码块的执行顺序:父静>子静>父构造代码块>父构造方法>子构造代码块>子构造方法

3、多态

    1、分类

        编译时多态:在编译过程中察觉的多态,重载,向上转型。

        运行时多态:在运行过程中察觉的多态,向下转型。

    2、向上转型、向下转型是在继承关系中,向下转型必须在向上转型的基之上。

    3、在继承关系中,父类的对象可以指向子类的实例,父类引用实体方法的时候,是调用子类重写以后的方法。

    4、向上转型

        父类的引用指向子类的实体

        父类类名 对象名=new 子类类();

        优点:减少重复代码,提高代码的复用性

        缺点:父类的引用无法调用子类特有的属性和方法

        解决方案:向下转型

    5、向下转型:

        子类对象的父类引用赋给子类

        子类类名 对象名=(子类类名)父类对象;

    6、 instanceof 判断左边的对象是否属于右边的类  对象名 instanceof 类名(子类类名)

    7、匿名对象

        new 类名()  只有堆空间,没有栈空间,只能属于一次,为了节省代码。

4、程序设计 6 大原则

1、单一职责原则
2、里氏替换原则
3、依赖倒置原则
4、接口隔离原则
5、迪米特法则
6、开闭原则
编程基础

1. 基本数据类型

1、基本数据类型:

    数值型:byte     1字节   8位   -128~127

        short    2字节   16位  -32768~32767

        int      4字节   32位  -2^31~2^31-1

        long     8字节   64位  2^63~2^63-1

    浮点类型:

        float    4字节   32位  

        double   8字节   64位

    字符型:char     2字节   16位   0~65535

    布尔型:boolean  true    false

2、引用类型:

    字符串 String、 类 class 、枚举 enum、接口interface

2. 变量

1、数据类型划分:

    基本类型变量:数据的值

    引用类型变量:数据的地址

2、声明的位置划分:

    局部变量

    全局变量

        区别:

        1、默认值

            局部没有默认值,使用前必须初始化。

            全局有默认值,默认为0,不必须初始化。

        2、声明位置

            局部在方法内。

            全局在方法外类内。

        3、作用位置

            局部只能在自己声明的方法里。

            全局在整个类中

3. 运算符

算术运算符:+ 、 - 、 * 、 / 、 % 、 ++ 、 --

赋值运算符:= 、 += 、 -= 、 *= 、 /= 、 %=

关系运算符:> 、 < 、 >= 、 > 、 >>

字符串连接运算符:+

三目运算符:X ? Y : Z

            X为boolean类型表达式,先计算x的值,若为true,整个三目运算的结果为表达式Y的值,否则整个运算结果为表达式Z的值。

4. if 语句

1、if(){}

2、if(){}else{}

3、if(){}else if(){}

4、if(){if(){}else()}    

5、if()执行语句 esle   执行语句 注意:执行语句只有一条语句的时候.可以将if esle 的大括号省略

注意:()内是boolean类型表达式,{}是语句块

    比较字符串用equals,比较内容。比较数值用==,比较地址。

    基本数据类型:变量名、变量值在栈中。

    引用数据类型:变量名在栈中,变量值在常量池中。

5. switch 语句

switch(表达式expr){

    case const1:

        statement1;

        break;

    … …

    case constN:

        statementN;

        break;

    [default:

        statement_dafault;

        break;]

}

注意:1、表达式必须是int、byte、char、short、enmu、String类型

      2、constN必须是常量或者finall变量,不能是范围

      3、所有的case语句的值不能相同,否则编译会报错

      4、default可要可不要

      5、break用来执行完一个分支后使程序跳出switch语句块,否则会一直会执行下去。

6. for 循环

for ([循环变量初始值设定]; [循环条件判断]; [改变循环变量的值]){

        循环体

}

注意:1、表达式2一般不可以省略,否则死循环

      2、表达式3可以省略,但是在循环体中必须有语句修改变量,以使表达式2在某一时刻为false结束循环。

      3、若同时省略表达式1,表表达式3,则相当于while(表达式2)语句

      4、三个表达式均省略 即for(;;)语句,此时相当于while(true)语句

      5、表达式1、表达式3可以是逗号表达式,以使循环变量值在修改时可以对其它变量赋值

------------------------------------------------------------------------------------------------------------
break 和 continue
1、break 跳出某个循环
2、continue 跳过某个循环

7. 方法

1、为什么使用方法?

    减少重复代码,提供代码复用性

    使用方法将功能提炼出来

    写在类内

2、声明格式

    [修饰符] 返回值类型 方法名([形式参数列表]){

              程序代码;

              [return 返回值;]

            }

   注意:1、方法是给外界提供内容的位置,形式参数是外界提供的

     2、方法调用的时候写的是实际参数

     3、实际参数的类型、顺序和形参要对应上

     4、支持自动转换类型,不支持强制类型转换

8. 抽象类和接口的区别

1、关键字:抽象类 abstract      接口interface

2、抽象类继承 extends         接口实现 implements

3、子类继承抽象类和          实现类实现接口的格式不同

4、接口中只有全局变量和抽象方法        抽象类中有各种属性和方法

5、抽象类只能单继承              接口可以多实现

6、抽象类的子类只能继承一个父类    实现类可以实现多个接口,并且还可以继承父类

7、抽象类的作用:提高代码的复用性   接口的作用:1、规范代码2、提高代码的拓展新

9. 重写和重载的区别

1、重写是在继承关系中             重载是在同一个类中

2、重写是方法名、参数列表和父类相同      重载,方法名相同,参数列表不相同(个数、类型、顺序)

3、重写返回值类型和父类相同          重载和返回值无关

4、重写访问权限修饰符不能比父类更加严格 重载没有要求

10. final finally finalize 区别

final 最终的,可修饰类,方法,属性

      类:不能被继承

      方法:不能被重写,可以被继承

      属性:全局变量:声明是必须初始化。局部变量:声明的时候可以不初始化。但都只能赋值一次

finally 跟try/catch后面,无论是否发生异常都会被执行。关闭数据库,关闭数据流。

finalize 由系统调用,垃圾回收器回收之前做一些清理的工作。

11. 设计模式

1、单例模式

    分类:懒汉式、饿汉式

    1、构造方法私有化

    2、在本类中创建本类对象

    3、保证对象的唯一性final

    4、给外界提供得到对象的方法 static

    5、在多线程中,饿汉式安全,懒汉式不安全

2、简单工厂模式

    批量创建对象

    1 创建工厂类 : 创建对象的方法

    2 果汁类 是所有种类果汁的父类

    3 在工厂类的方法中返回果汁类

    4 根据测试类中传递的字符串判断到底返回哪种果汁

    5 测试类通过工厂类返回果汁对象

3、建造者模式 

    内部类使用场景

    目的:静态内部类创建外部类对象

    1、 创建外部类,在其中创建一个静态内部类

    2、静态内部类中写属性,构造方法和set get方法

    3、静态内部类中写一个方法,必须返回外部类对象

    4、 给外部类创建对象,传递参数。

4、装饰者模式

    1、在处理流中使用

    2、子类重写父类的方法,提高父类方法的功能及效率

    3、为了尽可能减少重复代码,在重写的方法中用父类的对象调用父类原来的方法

    4、得到父类对象可以通过将父类对象作为子类属性,通过子类构造方法传递父类对象
数组及常用算法
1、声明:

  int a[];  int []b;

2、初始化:

    动态初始化:1、a=new int[2]; int[0]=1;...

    动态初始化:2、b=new b[]{3,4};

    静态初始化:int [] c={5,6};

3、数组常用的方法:

    排序:Array.sort();

    查找:Array.binarySearch();

    打印:Array.toString();

    复制:Array.copyof();

4、常用操作

    1、冒泡排序

    for(int i=0;i            
关注
打赏
1658837700
查看更多评论
0.0515s