java学习笔记01——基础知识

1、java中只有方法没有函数。方法和队形相关,而函数与对象无关。C语言中只有函数没有方法,C++中如果一个函数独立于类之外,那它就是函数,如果存在与一个类中,那它就是方法(即成员函数)。

2、在默认情况下,浮点数是double型的。如果需要将某个包括小数点的实数声明为单精度,则需要在该数值后加字母’F’(或小写字母’f‘)。

3、由于java程序是由类组成的,因此在一个完整的java程序里,至少需要有一个类。在java程序的文件名不能随便命名,必须和public类名称一样(大小写也必须保持一致)。因此,在一个独立的源码程序中,只能有一个public类,却可以有多个non-public类。若实在一个java程序中没有一个类是public,那么对该java程序的文件名就可以随意命名了。

4、Java中声明常量使用final,虽然java中有关键词const但目前并没有被java正式启用。必须在常量声明时对齐进行初始化。

5、声明变量的作用:1、指定在内存中分配空间大小。2、规定这个变量所能接受的运算。

6、Java中作用范围是禁止嵌套的,而在C/C++中则是允许的。

        void Fun(){

            int i = 1;

            if( i>0 ){

                int i = 2;      //java不能编译通过,而在C/C++中可以

        }

Java中类与方法中变量作用域可以嵌套。

public class HelloWorld{

    public static void main(String args[]){

        int x = 1;

        System.out.println( "x=" + x);

    }

    private int x;

}

7、java数据类型分为基本数据类型和引用数据类型。

基本数据类型:

数值型:整数类型(byte 8位、short16位、int 32位、long 64位)

浮点类型(float 32位、double64位)

字符型(char 16位)     java中字符占2个字节

布尔型(boolean 8位)

引用数据类型:

类(class) 接口(interface)数组(array)

double类型:共8字节,64位,第1位为符号位,中间11位表示指数,最后52位为尾数。

float类型:共4字节,32位,第1位为符号位,中间8位表示指数,最后23位表示位数。

8、类型转换:

a、自动类型转换

byte->short->int->long->float->double 按照范围由小到大实现自动转型操作。boolean类型与其他数据类型不兼容,不可以相互转换。

b、强制类型转换  (要转换类型)变量

9、在java中,若在变量的声明中没有赋初值,则会给该变量赋默认值。

10、java中取余操作数可以是整数也可以是负数和浮点数。而在C/C++中,取余运算的操作数只能是整数。

11、短路逻辑运算符(“&&”和”||”)和非短路逻辑运算符(“&”和”|”)

对于短路逻辑运算符“&&”只要有一个false则立即返回false。

        if( 1==2&& 1/0 == 0){}             //可以编译运行

对于短路逻辑运算符“||”只要有一个true则立即返回true。

        if( 1== 1|| 1/0 == 0){}              //可以编译运行

对于非短路逻辑运算符“&”和“|”左右两个运算数都被强制运算。

        if( 1==2& 1/0==0){}           //编译不通过

        if( 1==1| 1/0 == 0){}          //编译不通过

12、位运算符

       &两个二进制位均为1,结果为1,否则为0

       |两个二进制位均为0,结果为0,否则为1

       ^两个二进制位不同,结果为1,相同则为0

       ~结果与原二进制位相反:1变0,0变1

       >>有符号右移:高位负数补1,正数补0,低位抛弃

       <<左移:高位抛弃,低位补0.

       >>>无符号右移:低位抛弃,高位补0

13、foreach循环,用来遍历数组、集合框架等。

14、break    不带标签:跳出循环。

                     带标签:跳出循环,到指定的代码块。用于跳出嵌套很深的循环。

       continue              不带标签            带标签         与break相似,不同的是continue跳出本次循环,而break则是结束循环。

15、java在定义数组时不能在方括号中写下数组的长度。

       intmonth[3] = {31,14,23};             //错误

       int[3] month = {31,14,23};     //错误

       java数组的使用经历两个步骤:1、声明数组。2、分配内存给该数组。

       数据类型 [ ] 数组名;

       数组名 = new 数据类型[个数];

       java二维数组允许二维数组中每行的元素个数均不相同。

       即:int [][] num =null;

              num= new int[3][];

              num[0]= new int[4];

              num[1]= new int[3];

              num[2]= new int[5];

16、面向过程编程:程序 = 算法 + 数据结构

              “自上而下,步步求精”,人们更易于理解这种思想,将程序一步一步的分解,并按照一定的顺序执行。以过程为中心,以算法为驱动。

              不足:面向过程的程序上一步和下一步环环相扣,如果需求发生变化那么代码的改动会很大,不利于软件的后期维护和扩展。

面向对象编程:程序 = 对象 + 消息传递

     面向对象设计使程序更容易扩展,也更加符合现实世界的模型。

     不足:执行效率要低于面向过程程序设计。

       面向过程编程强调“该怎么做?”à函数

       面向队形编程强调“该让谁来做?”à对象

              对象 = 数据 + 方法

              程序 = 对象 + 消息传递 = ( 数据 + 方法) + 消息传递

17、对象:静态特征à变量

                     动态特征à方法

18、类是抽象的概念,是从所有对象提取出来的共有特征描述,而对象则是类的实例化。

19、类的四种权限:

       1、默认模式(default):这类方式申明和方法和类,只允许在同一个包类是可访问的。

       2、private(私有):如果一个方法、变量和构造方法被声明为“私有”访问,那么它仅能在当前声明它的类内部访问。类和接口的访问方式不能被声明为私有的。

       3、public(公有):如果一个方法、变量和构造方法被声明为“公有”访问,那么它不仅可以被跨类访问,而且允许跨包访问。如果需要访问其他包里的公有成员,则需要事先导入那个包含所需公有类、变量和方法等的那个包。

       4、protected(保护):如果一个方法、变量和构造方法被声明为“保护”访问,那么它只能被类本身的方法及子类访问,即使子类在不同的包中也可以访问。类和接口的访问方式不能被声明为保护类型的。

       如果用final申明了,那这个final类不能不继承。

20、类中,static修饰的成员不能访问没有static修饰的成员。

       java语言通过new关键字来调用构造函数,从而返回该类的实例。如果用户名优显示定义构造方法,java编译器会提供一个默认的无参构造方法。

21、staic语句块称为静态代码块,用于初始化static成员变量。

       java类属性和对象属性的初始化顺序如下:

              1、类属性(静态变量)定义时的初始化。

              2、static块中的初始化代码。

              3、对象属性(非静态变量)定义时的初始化。

              4、构造方法(函数)中的初始化代码。

       被static修饰的变量称为类变量,它们被类的实例所共享。

22、创建属于某类的对象,需要通过下面两个步骤实现:

              1、声明指向“由类所创建的对象”的变量

              2、利用new创建新的对象,并指派给先前所创建的变量。

       对象只有在实例化之后才能被使用,而实例化对象的关键字就是new。

23、匿名对象有两个特点:

       1、匿名对象是没有被其他对象所引用,即没有栈内存指向。

       2、由于匿名对象没有栈内存指向,所以其只能使用一次,之后就变成无法找寻的垃圾对象,故此会被垃圾回收器收回。

24、对象的比较:

       1、“==”运算符用于比较两个对象的内存地址(引用值)是否相等。

       2、equals()方法用来比较两个对象的内容是否一致。

25、重载:

       1、方法名称相同

       2、方法的参数列表不同(参数个数、参数类型、参数顺序,至少有一项不同)

       3、方法的返回值类型和修饰符不做要求,可以相同,也可以不同

26、构造方法:

       1、构造方法名称和其所属的类名必须保持一致。

       2、构造方法没有返回值,也不可以使用void。

       3、构造方法也可以重载

       4、构造方法不能被static和final修饰

       5、构造方法不能被继承,子类使用父类的构造方法需要使用super关键词。

       在java程序中一旦用户显示声明了构造方法,那么默认的“隐式的”构造方法就不会被编译器生成。

27、代码块:

       1、普通代码块

       2、构造代码块:把每个构造方法中相同的代码部分抽取出来,集中一起放在构造代码块中。减少不同构造方法中重复的代码,提高代码的复用性。

       3、静态代码块:主要用来初始化静态成员变量。它是最早执行的代码块。

       4、同步代码块

28、枚举

       a、通过enum关键字创建的枚举类型可以直接在多出控制语句中使用,如switch语句等。

       b、枚举关键字是定义枚举类型时必不可少的声明,而枚举类则是规定的枚举类型母类。

       c、枚举类(Enum类)是在Java.lang包下定义的一个公共类,其作用是用来构造新的枚举类型。

       d、使用枚举类的注意事项:

              (1)、如果enum定义的枚举类访问权限定义为public,则需要单独形成一个.java文件,即不可与包含main方法的public类同处于同一个文件。如果enum定义的枚举类访问权限为默认类型,即enum关键字前没有修饰符,则enum定义的对象可在同一个包访问,无需重复定义。

              (2)、使用enum定义的枚举类,默认继承与java.lang.Enum类。使用enum定义的枚举类,默认会使用final修饰,因此该类无法派生子类。

              (3)、使用enum定义的枚举类,其所有的枚举值必须在枚举类的第一行显示列出,肉则这个咩距类将永远不能产生实例。在累出这些实例时,系统会自动添加public static final修饰。

              (4)、所有使用enum定义的枚举类,都会由系统隐式提供一个values()方法,该方法可方便地遍历所有的枚举值。

       e、EnumMap   与    EnumSet

       f、定义enum内部方法,来达到个性化需求

       g、枚举可以实现一个或多个接口,每个枚举对象都必须分别实现接口中的抽象方法。

       h、java可以在枚举中直接定义一个或多个抽象方法。需要注意:需要为枚举每个对象单独地实现此方法。

       i、枚举类型不能用public和protected修饰符修饰构造方法。构造方法的权限只能是private或者friendly,friendly是当没有修饰符时的默认权限。所以枚举对象无法在程序中通过直接调用其构造方法来初始化。

       j、定义枚举类型时,如果是简单类型,那么最后一个枚举值后可以不加分号。但是如果枚举中包含有方法,那么最后一个枚举值后面代码必须要有分号“;”隔开。

       k、枚举类不可以被继承。java中规定枚举是不能被继承的,因此,枚举不能用abstract修饰,只能在每个枚举的实例实现每个抽象方法。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值