zoukankan      html  css  js  c++  java
  • java基础知识总结

    1.java基础架构

    java的三种技术架构:

    javaee:java的企业版开发平台,主要用于web开发;

    javase:java的标准版开发平台,主要用于桌面程序的开发;

    javame:java的电子开发平台,主要用于手机等程序的开发。

    2.环境变量的配置

    分为两种方法:

    永久:java_home=%...;path=%java_home%in;

    临时:set path=%path%;%java_homein

    classpth用于配置运行时,jvm查找.class文件的路径

    3.jdk and jre

    jdk是java development kit,java开发原件,用于开发;

    jre是java runtime environment,java运行环境,主要包括java运行的类库和jvm.

    4.java命令

    javac用于程序的编译,组织.java文件,生成.class文件。

    java用于程序的运行,启动jvm执行.class文件。

    5.jvm

    jvm是java的虚拟机,是一个以软件模拟形成的具有所有硬件功能,有独立指令,堆栈和寄存器的独立操作系统。jvm用于运行所有的java程序。运行java程序就必须要有jvm,在真机上不能直接运行java程序,正是因为java程序要在jvm上运行,所以java程序可以不经过任何修改适用于任何平台(平台无关性)。(jre部分)

    6.数据类型

    基本数据类型:byte short int long float double char boolean

    引用数据类型:数组/类/接口

    级别高低:byte char short (平级)-->int-->float-->long-->double(由低到高)

    自动类型的转换是有低级到高级,强制类型的转换,当把高级别的数据赋给低级的变量时。eg:int a=(int)1.02f

    逻辑运算符:

    |和||的区别:

    |:两边都运算。

    ||:短路或,如果左边为true,那么右边不参与运算。

    &和&&区别:

    &:无论左边为什么,右边都参与运算。

    &&:短路与,如果左边为false,那么右边不参与运算。

    7.break和continue

    break:作用于switch和循环语句,用于跳出或结束。

    当循环嵌套时break只跳出当前所在的循环。要跳出嵌套中的外部循环,只要给循环器名字即可。

    eg:

    •  outer:  
    • for(int i=0;i<3;i++){  
    • for(int j=0;j<3;j++){  
    •                 System.out.println(i+"---"+j);  
    • //当j=2时结束outer标识符指定的循环  
    • if(j==2){  
    • break outer;  
    •                 }  
    •             }  
    •         }  

    continue:只作用于循环结构,继续循环作用。

    结束本次循环,继续下次循环,该语句单独存在时,下面不可以定义语句,执行不到。

    与break类似,continue也可以紧跟一个标签,用于直接结束所标志的循环的档次循环,重新开始下一次循环(或者不加标签)。

    return也可以结束一个循环,但是与continue和break不同的屙屎,return直接结束整个方法,不管这个return处于多少层循环之内。

    8.java分了5个内存

    寄存器、本地方法区、方法区、栈、堆

    栈:存储的都是局部变量(函数中定义的局部变量,函数上的参数,语句中的变量);只要数据运算完成所在的区域结束,该数据就会被释放。

    堆:用于存储数组和对象,即实体(封装多个数据)。

    1.每个实体都有内存首地址。

    2.堆内存中的变量都有默认初始值,数据类型不同,值也不同。

    3.具有垃圾回收机制。

    9.面向对象

    过程和对象,过程其实就是函数,对象就是将函数等一些内容进行了封装。

    类的实例化就是对象。

    匿名对象:在定义对象时有两种方法:

    1.A a=new A();  fangfaming(a); a是对象的名字

    2.fangfaming(new A());//此时的new A()就是匿名对象

    类中定义的都成为成员:成员变量和成员函数。

    成员变量是事物的属性;成员函数就是事物的行为(方法)。

    private int age;私有的访问权限最低,只有在本类中访问有效。

    (私有仅仅是封装的一种体现形式而已)(类具有封装性)

    私有成员:不能直接创建对象访问,只能通过本类对外提供的具体的访问方式(可以提供函数)来完成对私有的访问。

    好处:可以在函数中加入逻辑判断等操作,对数据进行判断等操作。

    总结:开发时,属性是用于存储数据的,直接访问容易出现安全隐患,所以类中属性通常私有化,并通过getXX()/setXX()对外提供公共的访问。

    主类是程序执行的入口,保证被jvm调用。如果某个类不需要独立运行则不用加入主类。

    成员变量和局部变量:

    成员变量定义在类中;在这个类中有效;存储在堆内存中随对象的产生儿存在,消失而消失。

    局部变量定义在方法、参数上,语句中;在自己所属的大括号中有效;存储在栈中,随所属区域的运行儿存在,结束而释放。

    构造函数:用于给对象初始化,具有针对性。(如果类中没有定义,系统自动生成)

    特点:名字和类相同;无需返回类型;没有具体的返回值。  

    用重载来进行同一个构造函数不同形式的定义。

    构造函数和一般函数的不同:构造函数在对象的创建时被调用,且只执行一次,一般函数在对象被创建之后,需要调用时才执行。

    关于类中的普通代码块、构造块和静态代码块的区别见链接:

    (普通代码块:在方法或代码中出现的{},依顺序执行;构造块:在类中直接定义且没加static的{},每次创建对象时调用,早于构造方法;静态块:在类中加static的{},每个static代码块只执行一次,用于初始化类,在jvm加载时调用,所以早于主方法)http://www.cnblogs.com/sophine/p/3531282.html

    百度来的java运行内存分配图1和自己理解的图2

    ps图丑见谅!^_^

    10.封装:

    封装原则:将不需要对外提供的内容都隐藏起来,把属性隐藏起来,进队外提供公共方法。

    this代表对象,是所在函数对所属对象的引用。

    this. 调用的是成员属性或成员方法。

    this()调用的是本类的构造方法。(必须定义在构造函数的第一行,用于初始化)

    static用于修饰成员(变量或函数)

    特点:

          1.加static修饰,可以实现对象中的共性数据的对象共享;

      2.加static修饰的成员,可以直接被类名调用。

      3.静态随类的加载而加载所以优先于对象存在。

    弊端:静态方法只能访问静态的成员变量,无法加载非静态的成员变量。(因为静态的方法和成员变量优先于对象而存在,而非静态的成员变量要等对象建立后才能存在)

    静态方法中不能使用this super等关键字。this代表对象(但调用静态方法时对象还没有建立)

    当子类和父类定义了同样的成员变量,那么在用子类实例化的对象调用的是子类中成员变量的值,要想调用父类中的成员变量的值可以用super.代表子类所属的父类中的内存空间的引用。

    http://www.educity.cn/java/627401.html(介绍了堆栈和方法区)

    java之所以占内存是因为,当java中用类或数组时,将实例化的对象赋给栈中的一个变量,当应用完毕后栈中的变量自动释放,但是堆中的实例虽然不能被使用,但仍占据着内存。知道某个不确定的时间被垃圾回收器释放。

    11.继承

    Java中不支持多继承的原因:

    因为当一个类继承自多个父类时,若两个父类拥有相同名字的方法,那子类调用该功能时,到底要调用哪个呢。

    构造函数;子类在实例化对象时,首先会调用父类的构造函数,因为在子类的构造函数中的第一行隐含了super()语句,这是对父类无参构造函数的引用。(子类继承父类会继承到父类的数据,所有要看父类如何对自己的数据进行初始化)

    this() 和super(0都要定义在第一行:因为两者都是调用构造函数,进行初始化。两者只能出现一个。

    12.覆盖

    1.子类覆盖父类时,必须保证子类方法的权限大于等于父类犯法权限。

    2.静态只能覆盖静态。要么都不静态。

    13.关键字final

    可以修饰类,方法和变量。

    类不可以被继承,方法不可以被覆盖,变量成为一个常量,只能赋值一次(通常大写_链接)

    14.抽象类

    抽象类的特点;

    1.抽象类可以定义抽象方法和非抽象方法,但是抽象的方法只能定义在抽象类中。抽象用abstract修饰

    2.抽象方法制定一方法生命,不定义方法实现。

    3.抽象类必须被继承了之后才能实例化(创建对象,且子类要覆盖抽象类的所有抽象方法

    4.abstract不能和private final static共存。

    15.接口

    用关键字interface定义。

    接口中最常见的成员有全局常量和抽象方法。

     注意:接口中的成员都有固定的修饰符。

    成员变量:public static final

    成员方法:public abstract

    接口不可以直接实例化,接口的自雷必须实现了接口的所有抽象方法才能实例化。

    一个类只能继承一个父类,但是一个类可以同时实现多个接口。

    抽象类描述的一般是基本内容,接口定义的对象的扩展内容。

    抽象类和接口的共性:都是不断向上抽取的结果。

    http://wenku.baidu.com/link?url=qU9U9Q2a_-iiMwUlXJHPAUsUcV-GdXUPIFHgmOx5Gtj9xPpIEuD1zEdD1ICUT4zdkwXa3cZ6IP2WbNZm_lKD-bUu2q9MhyBE3MPPUM3CBX_

  • 相关阅读:
    react 组件库
    Git命令记录
    H5+App开发框架汇总
    常见移动设备的 CSS3 Media Query 整理(iPhone/iPad/Galaxy/HTC One etc.)
    天猫11.11:手机淘宝 521 性能优化项目揭秘
    H5项目常见问题汇总及解决方案
    【angular5项目积累总结】侧栏菜单 navmenu
    【angular5项目积累总结】avatar组件
    【angular5项目积累总结】breadcrumb面包屑组件
    开源建站系统
  • 原文地址:https://www.cnblogs.com/xleer/p/5311955.html
Copyright © 2011-2022 走看看