zoukankan      html  css  js  c++  java
  • javase知识点

    Java基础

     

    1.什么是Java?

    Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。

    2.Java的语言优势

    Java语言简单、面向对象、分布式、健壮、安全、体系结构中立、可移植、高性能、解释型、多线程、动态。

    3.Java 分类

    Java SE(Java Platform  Standard Edition) :Java平台标准版。主要用于桌面应用程序的开发,是Java技术的核心,提供基础 Java开发工具、执行环境与应用程序接口(API)。 
    Java EE(Java Platform  Enterprise Edition):Java平台企业版。主要用于网络程序和企业级应用的开发。
    Java ME(Java Platform Mobile Edition) 嵌入式开发(手机手机软件游戏编程、小家电等)  

    4.数据类型

    基本数据类型:byte、short、int 、 long,float 、double,  char ,boolean
    引用数据类型:class 、interface 、array

    5..类型的强制转换

    Java中的自动类型提升问题。
    正向过程:从低字节到高字节可以自动转换。  byte->short->int->long->float->double
    逆向过程:从高字节到低字节用强制类型转换。 例:int a = (int)4.562; 注:逆向转换将丢失精度。

    6.变量

    7.运算符

    算术运算符:
    单目:+(取正)   -(取负)  ++(自增1)   --(自减1)
    双目:+  -  *   /   %(取余)
    三目:a>b?true:false   说明:当a>b的时候,为true(即冒号前面的值),否则为false;

    关系运算符:
    ==(等于)     !=(不等于)   > (大于)    <(小于)   >=(大于等于)   <=(小于等于)


    位运算符,逻辑运算符:
    &&(与):当两边操作数的位数同为1时,结果为1,否则为0。 如 1100 && 1010=1000
    ||(或):当两边操作数的位有一边为1时,结果为1,否则为0。如 1100 ||1 010=1110
     ~(非):0变1,1变0。
     ^(异或):两边的位不同时,记过为1,否则为0。

    赋值运算符
    =     +=      -=      *=      /=      %=     &=     |=      <<=        >>=

    instanceof 运算符
    该运算符为双目运算符,左边的操作元是一个对象,右边是一个类。当左边的对象是右边的类创建的对象时,该运算符运算结果为true,否则为false。

    运算符优先级(高----低) [ ]  ( )  ++  --  !  ~  instanceof   * / % + - << >> >>> <> < = > == != &^& & || ? := op= 

     
     
    8.条件结构
    if(  ){
    }


    switch( ){

    switch( ){
    }
     

    9.循环结构

    while(  ){

    }

    do{

    }while(  )

    for(初始部分;条件判断;改变循环变量的值){

    }

    10.跳转语句

    break;跳出loop,执行loop外面的语句
    continue;终止本次loop,进入下一次loop

    11.数组

    数组是一个变量,用于将相同数据类型和数据存储在存储单元中。
    数组类型     数组名[  ];   或     数据类型[  ]  数组名;

    求数组长数组长度: 数组名.length();
    排序:Array.sort(数组名);   //对数组进行升序排列

    12.字符串

    求字符串长度: 字符串名.length();
    字符串比较: 字符串1.equals(字符串2);
    常用提取和查询字符串的方法
    pubic  int  indexOf( int  a);                 //搜索第一个出现的字符a(或则字符集value)
    public  int indexOf( String value);

    public   int  lastIndexOf( String  a);      //搜索最后一个出现的字符a(或则字符集value)
    public   int  lastIndexOf( String value);

    public String subString (int index);       //提取从位置索引开始的字符串部分
    public String substring(int begin, int end);        //提取begiin  和end 之间的字符串部分

    public String trim();    //返回一个前后不含任何空格的调用字符串的副本.
    (数组下标从0开始 !)


    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    配置java环境变量:
    JAVA_HOME:配置JDK的目录
    CLASSPATH:指定到哪里去找运行时需要用到的类代码(字节码)
    PATH:指定可执行程序的位置

    Java的垃圾回收:
    由一个后台线程gc进行垃圾回收
    虚拟机判定内存不够的时候会中断代码的运行,这时候gc才进行垃圾回收
    缺点:不能够精确的去回收内存
    java.lang.System.gc();建议回收内存,但系统不一定回应,他会先去看内存是否够用,够用则不予理睬,不够用才会去进行垃圾回收
    内存中什么算是垃圾:
    不在被引用的对象(局部变量,没有指针指向的)

    java的安全性:
    沙箱机制:只能做沙箱允许的操作
    通过下面环节,实现安全
    加载有用的类文件,不需要的不加载
    校验字节码,查看允许的操作
    查看代码和虚拟机的特性是否相符
    查看代码是否有破坏性
    查看是否有违规操作,如越界
    查看类型是否匹配,类型转换是否能正确执行

    包(package):把源文件放在目录下
    由于工程的需要,将不同的源文件放在不同的目录下,从而引入了包。
    包可以看作就是一个存放java源文件的目录。
    在源码中声明一个包名:package p;(只能放在第一行,且最多只能是一行)
    如果指定多层包,那么在包名之间我们可以用.作为分隔符:package p1.p2.p3.p4;
    用“javac HelloWorld.java –d 绝对路径”,编译后生成的字节码文件就会放在指定的包结构下
    执行该程序需要用" java 包名.类名 "
    引进包中的某个类:import 包名.类名;

    引进包中的所有类:import 包名.*;

    标识符:
    命名规则:
    (1) 由字母、数字、下划线、$组成,不能以数字开头
    (2) 大小写敏感
    (3) 不得使用java中的关键字和保留字

    关键字:都是小写的,jdk1.2多了strictfp(经准浮点型),关键字 jdk1.4多了assert(断言)关键字,  jdk1.5多了enum(枚举) 关键字
    随着学习进度,会慢慢接触到的
    true、false、null严格说不应该算关键字,应称其为保留字更合适

    习惯:
    (1) 标识符要符合语义信息
    (2) 包名所有字母小写
    (3) 类名每个单词首字母大写,其它小写 //TarenaStudent
    (4) 变量和方法:第一个单词小写,从第二个单词开始首字母大写 //tarenaStudent
    (5) 常量:所有字母大写,每个单词之间用" _ "连接

    Java OOP    Object Oriented Programming,面向对象程序设计

    1.面向对象的过程就是抽象的过程,分3步实现:
    • 发现类
    • 发现类的属性
    • 发现类的方法
    2.Java中对象的创建和成员的调用方法:
    通过构造方法创建对象.。 如:Dog d=new Dog();
    通过 对象名 属性名调用属性。如:d . name="Lucy"
    通过 对象名 . 方法名调用方法。如:d.eat();
     
     
    3.类: 类是对某一类事物的具体描述,是抽象的,概念上的定义。
    对象:对象是实际存在的该事物的个体,是具体的、现实的。
    类包含对象,对象是类的实例。
     
     
    4.构造方法(构造函数):
    名字和类名相同,没有返回值类型。在实例化对象是被调用。
     作用:在创建对象是进行一些初始化的操作,比如给成员属性赋初始值....
     
     
    5.构造方法和方法的区别:
    构造方法  名字和类名相同,无返回值,用new调用;
    方法  有自己的名字,用 点 调用
     
    6.重载(Overloading)  和  重写(Overriding)区别:
    重载:同一个类中,方法名相同,方法的参数列表不同(个数、类型、顺序)
    重写:在子父类中,方法名相同,参数列表相同,返回值类型相同(或是其子类)
     
     
    7.面向对象的三大特征:封装(Encapsulation)、继承(Inheritance)、多态(Polymorphism)。
    封装:
    将类的状态信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法对其进行操作和访问。
    (好处:隐藏属性;方便加入存储控制语句,限制不合理操作)
     
    继承:
    通过继承实现代码重用。Java中所有的类都是通过直接或间接继承java.lang.Object类得到的;
    继承而得到的类称为子类,被继承的类称为父类。Java只支持单一继承;
    子类不能继承父类中访问权限为private的成员变量和方法;
    子类可以重写父类的方法,以及命名与父类同名的成员变量。
    (好处:实现代码重用)
     
    多态:
    具有表现多种形态的能力的特征。更专业的说法是,同一个实现接口,使用不同的实例而执行不同的操作。
    使用方法:
    。继承关系(继承与父类);
    。子类重写父类方法;
    。调用父类的方法;
    。调用是传入子类实例。
    (好处:便于程序的扩展性和维护性。)
     
    子类到父类的转换(向上转型)
    父类到子类的转换(向下转型)--------类型强转!
     
    instanceof运算符:用于判断一个对象是否属于一个类或者实现了一个接口。
    基本上包括了Java培训机构所讲的知识点。
    对象   instanceof   类/接口
    (调用特有的方法要强转,强转是要用instanceof判断)
     
     
    8. this 和 super
    this关键字:对一个对象的默认引用,在每个实例方法的内部,都有一个this引用变量,指向调用这个方法的对象。
    this只能调用实例变量、实例方法、构造方法,不能调用类变量、类方法、局部变量。
     
    super关键字:代表当前对象的直接父类对象的默认引用。
    子类中通过super关键字访问父类成员(属性、方法、构造方法)。
    。super必须在子类中(子类的构造方法或方法中)
    。super无法通过private访问父类...
     
     
    9.方法修饰符
    abstract:
    抽象类和抽象方法都通过abstract关键字修饰。
    抽象类不能实例化;
    抽象方法只有方法体,没有方法实现;
    有抽象方法的类一定是抽象类;
    如果修饰在父类,则该类为抽象类;
    子类必须重写父类所有的抽象方法才能实例化,封装子类还是一个抽象类;
     
    final:(开发的程序不希望被拓展,则在类加final)
    其修饰的类不能被继承,无子类;
    其修饰的方法不能被子类方法重写;
    其修饰的变量表示为常量,只能赋值一次。
     
    static:
    程序加载时马上就会调用;
    用static使用属性和方法是不需要实例化,直接调用;
    非静态方法不能调用静态方法(数据),静态方法不能调用非静态方法;
     
     
    10.访问修饰符
    public   -------------任意类可访问,同包或者不同包
    private   ------------该类可访问,其他类不能被访问
    protected  ---------同包的类中可访问,若不同包,想访问的类必须是被访问的类的子类
    default   ------------同包,同类可访问
     
     
    11.接口(interface)
    I 和类、抽象类是一个层次的概念;
    I 中可以定义常量,不能定义变量;
    I 中所以方法都是抽象方法;
    I 不能实例化,I 中不能有构造方法;
    I 直接可以通过extends 实现继承关系,一个I 可以继承多个 I ,但 I 不能继承类;
    一个类只能有一个直接父类,但可通过implements实现多个接口;
    (extends 必须在 implements 之前)
     
    接口有抽象类更好的特性:
    。可以被多继承
    。设计和实现完全分离
    。更加自然的使用多态
    。易于搭建程序框架(面向接口编程)
    。易于系统的更换
     
     
    Java 接口 和C# 接口
      Java Interface C#  Interface
    实现 implements     --
    继承 extends     --
    静态成员 常量    --
    public 可以显式使用 不能显示使用
    定义 interface  interface
     
     
     
    12.内部类
    • Object 类
    • String 类   -->>
    • StringBuffer类  -->>
    • System 类   -->>
    • DateFormat 类 
    • .....
     
     
    13.异常
    程序中发生的不正常的事件。
    异常处理:try   catch   finally   throw   throws
    声明异常:throws
    抛出异常:throw
     
    throw 和throws 区别:
    。作用:throw 用于程序员自行产生并抛出异常,throws 用于声明在该方法内抛出了异常;
    。使用位置:throw 位于方法体内部,可做单独语句使用,throws 必须跟在方法参数列表后面,不能单独使用;
    。内容:throw 抛出一个异常对象,而且只能是一个, throws  后面跟异常类,而且可以跟多个。
     
     
    使用多重Catch块时,catch块的排列顺序必须是从子类到父类,最后一个一般是Exception类!
     
    常见异常类:
    ArithmeticException  算术异常
    ArrayIndexOutBoundsException  数组下标越界
    NullPointerException    空指针
    ClassNotFoundException 不能加载所需要的类
    ClassCastException     对象强制类型转换异常
    .......
  • 相关阅读:
    bootstrap 新手入门(一)【我是新手,请指正】
    zend studio 安装+汉化
    tp总结
    tp论坛 第三节 板块模板的建立和完善(二)
    tp论坛 分页(三)
    tp写一个微型论坛 (一)
    thinkphp第四节 模型与CURD
    thinkphp 第二节
    angular5中的自定义指令(属性指令)
    列表生成式和生成器生成式
  • 原文地址:https://www.cnblogs.com/plan123/p/5549337.html
Copyright © 2011-2022 走看看