java笔记

1 Java环境变量配置

//hello.java文件

class Demo

{

    publicstaticvoid main(String[] args)

    {

        System.out.println("Hello World!");

        System.out.println("the day is the first day!");

    }

}

 

 

2 数据类型

数据类型:基本数据类型和引用数据类型

引用数据类型:类(class)、接口(interface)、数组[]

基本数据类型:byte。java byte是做为最小的数字来处理的,占用1个字节。因此它的值域被定义为-128~127,也就是signed byte。char 在java中是2个字节。java采用unicode,2个字节(16位)来表示一个字符

 

 

class Demo

{

    publicstaticvoid main(String[] args)

    {

        byte b =3;

        int x =1;

        b = 1 + b;

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

    }

}

/*错误: 不兼容的类型: int转换到byte可能会有损失

                b = x + b;

                      ^

1 个错误*/

这种错误的发生原因,就是因为byte b在定义的时候,初始化的值是常量,因而可以自动将常量转为byte类型。但是b=1+b; 此时b是变量,因而就不会自动转化byte类型,因为会带来精度的丢失。

解决方法:就是强制类型转化b =(byte)(1+ b);

3 赋值运算符

class Demo1

{

    publicstaticvoid main(String[] argc)

    {

        int a =3;

        a+=4;

        short s =4;

        s = s +4;//编译失败,因为右边计算之后会是int类型,结果无法检测是否符合short类型的要求

        s+=4;//赋值运算符具有自动转换,5会转为short类型,编译成功

       

    }

}

 

4 比较运算符

Instanceof  检查是否是类的对象

5 逻辑运算符

//

&&&的区别

&:两边都参与运算;

&&:当左边为false,右边不参与运算

|||区别

|:两边都参与运算

||:当左边为true,右边不参与运算

 

 

6 定义数组

int[] arr =newint[3];

 

7构造函数

l  构造函数可以调用类的成员函数,但是成员函数是不可以调用构造函数。因为对象创建初始化,首先使用的是构造函数,然后通过创建的对象,才可以使用成员函数。

l  构造函数可以调用构造函数,涉及到了this对象。谁调用了this(参数),谁的对象初始化。且对this的调用必须是构造器中的第一个语句。例如:

class Person

{

    private String name;

    privateint age;

    private Person(String n)

    {

        name = n;

    }

    Person(String n,int a)

    {

        this(n);

        name = n;

        age = a;

    }

}

l  对于普通类成员函数,其也有一个this, 而这个this的指向是根据谁哪个对象调用给改变的。对于使用变量,一般都是先判断所在的函数是否有局部变量,若有,则就不会再this所指向的堆中去查找变量。若想输出堆中的变量内容,则就需要用this显示标识。即this关键字的一个作用:可以用this标识哪个变量是成员变量,这个标识可以省略不屑。但是局部变量和成员变量同名时,必须用this来标识。

 

 

8 static关键字-修饰函数

创建对象就是为了产生实例,并进行数据的封装。而调用功能时,却没有用到这些对象中封装的数据。该对象的创建意义时没有,也浪费了堆内存中的空间。解决方法:使用static静态关键字。

被static修饰的成员方法,除了可以被对象调用外,也可以被类名调用。

 

 

但是绝对不允许在static修饰的成员函数中,使用this变量。原因:静态是随着类的加载而加载,也是随着类的消失而消失,静态优先于对象存在,被对象共享。因为静态先存在内存中,无法访问后来的对象中的数据,所以静态无法访问非静态。而且内部无法书写this,因为这时对象有可能不存在,this没有任何指向。

 

 

什么时候需要使用static静态修饰呢?定义功能时,如果功能不需要访问类中的成员变量时,该功能就需要static静态修饰。还需要注意的是,静态方法不能非静态成员;但是非静态可以访问静态成员。静态的弊端在于出现了访问的局限性。

在一个静态修饰的方法中,若想调用非静态方法,第一,就是使用类调用,则要求调用的非静态成员方法也必须是static修饰;第二,若不是静态修饰,就是使用对象调用,然后调用非静态方法。

 

 

posted @ 2018-08-16 22:44  繁星的夜空2012  阅读(238)  评论(0编辑  收藏  举报