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修饰;第二,若不是静态修饰,就是使用对象调用,然后调用非静态方法。