Java学习笔记(一)

来源:互联网 发布:淘宝上的降头有谁试过 编辑:程序博客网 时间:2024/06/03 23:59

1.数据溢出

当范围内最大值再加1时,就变成了单位内最小的值。E.g.

int a = Integer.MAX_VALUE;

println(整形数据中最大的值: + a);

println(最大值加1之后: + ( a + 1 ));

println(最大值加2之后: + ( a + 2 ));

println(最大值加2之后: + ( (long)a + 2 )); // 等同于( a + 2L )

 

———————————输出结果—————————

整形数据中最大的值:2147483647

最大值加1之后:-2147483648

最大值加2之后:-2147483647

最大值加2之后:2147483649

 

2.需要注意:任何数据类型遇到String都向String类型转换。E.g.

int i = 1, j = 2;

println(i + j =  + i + j);

println(i + j =  + ( i + j ));

———————————输出结果————————————

i + j = 12

i + j = 3

(为了保证数值的运算需要加括号来分割)

 

3.数据类型的转换

(1)自动转换 e.g. 3/2 = 1 ; 3/2.0 = 1.5

(2)强制转换 e.g. (int)(23.33) = 23

 

4.常用的运算符中,三目运算符的优先级最低

5.简洁表达式

a* = b++; //相当于首先a = a * b,之后再b = b + 1

a* = ++b; //相当于首先b = b + 1,之后再a = a * b

 

5.关于switch-case

JDK1.5J2SE0.5)开始,switch开始支持枚举类

(1)case中没有break,则会一直执行到switch语句的尾端才会离开语句;

int x= 3,y = 6;

char opr = +;

switch(opr)

{

    case +:

       print(x+y= + (x+y));

   case -:

       print(x-y= + (x-y));

   case /:

       print(x/y =  + (x/y) );

   case *:

       print(x*y= + x*y);

   default:

       print未知!;

}

————————————输出结果————————————

x+y = 9

x - y = -3

x/y = 0

x*y = 18

未知!

(2)在switch-case语句中,如果没有定义default语句,则什么也不执行,直接退出switch

 

6.Dos下运行程序出现死循环按Ctrl + C可以结束循环。

7.break,continuereturn

   break:跳出本级所有的循环;

   continue:终止本次循环,继续下次循环:

   return:终止方法操作。

 

8.Java中的数据类型:基本数据类型,引用数据类型

基本数据类型包括:intfloatbyte等等

引用数据类型包括:数组,类和接口

9.关于int[] arr = new int[3]

  int[] arr = null; // 数组的声明

  arr = new int[3]; //分配内存

int[] arr = null;的过程只是在占内存中保存了此数组的名称(数组在堆内存中存储地址的参考地址),arr = new int[3];的过程是在堆内存中开辟了三个int类型的存储空间,并将此存储空间的参考地址赋给arr


【注意】

数组是引用数据类型,作为函数形参传入的是数组的引用,即数组的存储地址,在函数内操作的过程,实际上操作的是堆内存中数组本身,当函数结束之后,会保存修改结果。

如上图所示,xfun函数内的局部变量,通过x对其指向的数组进行了修改,在fun的生命周期结束之后,x回收失效,但fun内对堆内存中数组元素的修改杯保存了下来。E.g.

 

public void fun(int[] x)

{

    x[0] = 6;

}

 

int[] arr = {1,2,3}; //静态声明一个数组

//调用fun

print(arr);

//调用fun函数

fun(arr);

//调用fun

print(arr);

———————————输出结果————————————

1 2 3

6 2 3

 

相比数组,整数类型等基本数据类型的数据作为形参传入时,只是一种值传递的过程,函数的任何操作不会改变变量本身的值。E.g.

public void fun(int x)

{

    x++;

}

 

int a = 1; // 声明一个全局变量

//调用fun

print(a);

//调用fun函数

fun(a);

//调用fun

print(a);

———————————输出结果————————————

1

1

0 0
原创粉丝点击