java学习笔记

来源:互联网 发布:10.2怎么卸载软件 编辑:程序博客网 时间:2024/06/05 03:47

一:原生数据类型的使用陷阱

1.       byte类型数据只能表示-128-127之间的256个整数。

2.       public class Pitfall{

public static void main(String[] ags){

     float a = 1.3;//编译有错,损失精度

     System.out.println(a);

}

}

错误原因:在java中所有浮点类型默认是double类型。

如何将double类型的值赋给float类型的值:用强制类型转换。

float a=(float)1.3    float a=1.3fok

 

3.        public class Pitfall{

                 public static void main(String[] ags){

                       int a;

                        System.out.println(a);

}

}

编译有错,变量a尚未初始化。所以变量在使用前,必须赋值。

4.       public class Pitfall{

public static void main(String[] ags){

     a=1;

     System.out.println(a);

}

}

编译有错,变量必须声明类型方可使用。

5.       public class Pitfall{

public static void main(String[] ags){

     int a=1;

     int a=2;

     System.out.println(a);

}

}

编译有错,变量不能重复定义。

 

 

6.       public class Pitfall{

public static void main(String[] ags){

     int a =1;

     short b=a;

     System.out.println(b);

}

}

编译有错,int类型的a赋给short类型的b,可能损失精度。需强转。

 

7.       public class Pitfall{

public static void main(String[] ags){

     short a =1;

     int b = a;

     System.out.println(b);

}

}

以上代码,编译没错。原因:可以将范围小的short类型变量赋给范围大的int类型变量,不会损失精度。

 

二:java运算符

1.       当有若干个变量类型参与运算时,其结果的类型是范围最大的那个变量类型。比如说,参与运算的变量类型有intshortfloatdouble,那么其结果的类型的是double

 

2.       取模的规律:取模的结果符号永远与被除数(分子)的结果的相同。

Int  a = 4;

Int  b = -3;

Int  c = a%b;

C的结果是1.

Int  a = -4;

Int  b = 3;

Int  c = a%b;

C的结果是-1

3.       逻辑与的短路特性:

public class LogicTest{

     public static void main(String[] args){

         int a = 1;

int b = 2;

int c = 3;

int d = 4;

int e = 5;

 

boolean f = (a>b)&&((e=c)<d);

System.out.println(f);

System.out.println(e);

 

其结果f为假,e=5.

原因:逻辑与前操作数是假时,后面操作数就不执行了,这就发生了短路。

 

逻辑或的短路特性:当第一个操作数是真时,第二个的操作数就不执行,这就发生了短路。

 

 

4.       自增自减:

public class Pitfall{

public static void main(String[] ags){

     int a =1;

     int b = a++;

     System.out.println(b);

System.out.println(a);

}

}

打印结果是 a=2b=1

public class Pitfall{

public static void main(String[] ags){

     int a =1;

     int b = ++a;

     System.out.println(b);

System.out.println(a);

}

}

打印的结果是 a=2b=2

 

总结:int b = a++;其意思是先将a赋值给b,然后a再加1.

      Int b = ++a;其意思是先将a1,然后再将加1的结果赋值给b

      a++,++a,没区别,因为它们并没有涉及到赋值。

 

5.       三元运算符

Type d = a ? b : c;其中aboolean表达式,当a为真时,d=b;当a为假时,d=c

 

三:流程控制语句

 

1.       if的三种表达形式:

if(布尔表达式){

待执行的代码}

 

If(布尔表达式){

待执行的代码}

else{

待执行的代码}

 

If(布尔表达式){

待执行的代码}

else if (布尔表达式){

待执行的代码}

else{

待执行的代码}

2.       switch

switch(变量) {  //其中变量类型只能为byte,short,int,char.

case 1:

   待执行的代码;

   break;

case 2:

   待执行的代码;

   break

case 3:

   待执行的代码;

   break;

default:

   待执行的代码;

   break;

}

 

Break可有可无,但没有break逻辑将会错误,程序会一直运行而不判断下个case情况,直到碰到下个break,所以最好写上break

 

3.       三种循环控制语句:

While(布尔表达式){

 

待执行的代码

}

 

Do{

 

待执行的代码

 

}while(布尔表达式)

 

For(变量初始化;条件判断;步进)

{

待执行的代码

}

 

四:面向对象编程

 

1.       类:是一个抽象概念,类中包括了数据和对数据的操作。

2.       面向对象的三大特性:继承(inheritance),封装(encapsulation),多态(polymorphism)

3.       封装:类包含了数据和方法,将数据和方法放在类中就构成封装。

4.       如何定义类:

修饰符  class 类名{

// 类的属性和方法

}

 

5.       如何定义方法:

修饰符  返回值 方法名(参数1,参数2,参数3…{

//方法体

 

}

6.       main方法是整个程序的入口,没有main方法程序就无法执行。

7.       方法的执行过程:首先定义方法,然后调用,最后返回调用方法的值。

8.       在方法的定义中,不能重复定义。方法调用,需要通过对象来调用。

9.       关于void返回值方法的两种实现方法:

1.       Public void test(int a){

     System.out.println(“hello”);

}

不适用return语句。

2.       Public void test(int a){

     If(a>10){

     Return;

}

     System.out.println(“welcome”);

使用return语句,但return后面不带任何变量,只跟着一个分号;

 

10.   关于方法应注意的问题:

1.       方法定义中,return的类型应该和方法头中的返回类型一致。

2.       方法调用中,实际参数和形式参数应保持一致(参数个数,类型)。

3.       方法定义中的返回类型应和接收方法者的返回类型一致。

 

11.   如何生成类对象

New 类名();

12.   命名约定:

类名:首字母大写,当类名由多个单词组成时,每个单词的首字母都要大写。如,Person,PersonTest.

方法名:当方法名是一个单词时,单词都小写。当方法名由多个单词组成时,由第二个单词的开始每个单词的首字母都大写。如;add(), addAndSubstract();

属性名:和方法名的一样。如 ageAgeOfPerson

 

13.   成员变量和局部变量的比较:

1.       成员变量和局部变量都得声明

2.       局部变量必须得初始化(赋值),而成员变量可以初始化也可以不初始化。如果没有赋初值,那么每个类型的成员变量会有一个默认值:

Byte, short, int, long 的默认值是0.

Float, double的默认值是0.0.

Char的默认值是’\u0000’

Boolean的默认值是flase.

14.   引用类型(reference type,是用在对象上的。一个对象可以被多个引用所指向,但在同一时刻,一个引用只能指向唯一一个对象。当一个对像被多个引用所指向时,不论哪一个引用改变对象的属性,其改变都会反映到其它引用中。

 

15.   如果一个类包含属性和方法,该类中的每个对象都有各自的属性,但无论多少个对象都共享同一个方法。

16.   方法参数传递总结:无论是原始数据类型还是引用数据类型,它们都是值传递。只不过,当原始数据类型传值后,各自没有影响,各自是独立的;当引用数据类型传值后,实际参数和形式参数指向的是同一份地址,二者联系紧密,改变其中任何一个都会影响彼此。

 

17.   构造方法:其作用:是完成为对象的属性初始化的工作。

           特点:

1.       构造方法的名字必须与类名完全一致。

2.       构造方法方法头中不能出现void,没有返回值。

3.       在定义类时没有为类定义构造方法,那么java编译器会给该类自动生成一个不带参数且方法体为空的构造方法,该构造方法为默认的构造方法。

4.       当定义类时定义了构造方法,java编译器不会再给该类生成构造方法。

5.       调用构造方法不能显示的调用,构造方法是通过new()隐式的调用,并且会通过new括号中的参数调用相应的构造方法。

 

18.   New()产生对象完成的三件事:

1.       在内存中开辟空间

2.       调用相应的构造方法

3.       将对象的地址返回。

 

 

0 0
原创粉丝点击