1.交换两个变量的值
int a = 1; int b = 2; 方法一: int c = a; a = b; b = c; 方法二: a = a + b; b = a - b; a = a - b; 方法三: a = a ^ b; b = a ^ b; a = a^ b; //一个数字异或同一个数字两次,值不会改变。2.java的语法结构 顺序结构、分支结构、循环结构 3.循环结构 (1)for循环:程序想要执行一个正常的循环,需要满足三个条件(初始值、终点判定条件、变化量),允许将三个条件都写在括号内。 变化量放置在循环内执行,可能会因为变化量的位置,影响执行的最终结果。 初始值的位置也可能引起最终结果不同,特别是在两重循环中。 (2)while循环、do while 循环 (3)continue、break关键字 continue:跳出本次循环 break:终止本次循环 4.数组 (1)数组是一组数据类型相同的数据的组合,将这些数据统一的管理起来。 (2)数组本身是一个引用数据类型,数组内存存储的类型可以是基本类型,也可以是引用类型。 (3)数组是存储在堆内存的一串连续的地址。 (4)如果需要用变量来进行储存,变量空间的栈内存中,变量中存储的是数组引用(地址)。 (5)数组在初始化时必须指定长度及内部存储元素的类型。 (6)数组的长度一旦确定是不能再次发生改变的 (7)数组的定义:
静态初始化:有长度、有元素 int[] array = new int[]{10,20,30,40,50}; int[] array = {10,20,30,40,50}; 动态初始化:有长度、没有元素 int[] array = new int[5];//采用的是默认值(8)数组元素的访问: 通过元素在数组中的位置来访问,存值、取值,位置是下标索引,如果下标越界,会出现ArrayIndexOutOfBoundException。 (9)数组元素的遍历(轮询) 通过循环的方式访问数组的每一个元素。 JDK1.5之后新的特性,增强for循环
for(自己定义的变量(接收数组内每一个元素):遍历的数组array){} 区别: 正常for:有三个必要的条件,index的索引,找到某一个元素的位置,可以通过index直接访问数组的某一个位置,存值、取值都可以,不好在于写法比较麻烦。 增强的for:有两个条件,用来取值的变量(用来遍历数组),没有index索引写法相对比较容易, 只能取值、不能存值,没有index索引,找不到元素到底是哪一个。(10)变量之间的赋值与数组间赋值的不同
int a = 10; int b = a; b = 100; System.out.println(a);//10 //========================== int[] x = {10,20,30}; int[] y = x; y[0] = 100; System.out.println()x[0]);//100 int[] x = new int[]{10,20,30}; //栈内存的小容器,类型定义只能储存这种东西,容器只能存一份。x存储在栈上,里面 //储存的元素为地址,见到new关键字相当于在堆内开辟一块新的内存,数组在堆内存的 //空间形态是一串连续的地址(11)基本数据类型与引用数据类型在内存结构上的区别 所有的变量空间都存储在栈内存上,变量空间可以存储基本数据类型,也可以存储引用数据类型。如果变量空间存储的是基本数据类型,存储的是值,一个变量值改变不会影响其他,如果变量空间存储的是引用数据类型,存储的是引用(地址),一个变量地址对于的值改变,另一个也会跟着改变(在赋值过程中)。 5.二维数组 (1)定义:int[][] array; (2)初始化:静态——有长度、有元素 动态——只有长度、没有元素 (3)元素访问:通过元素在数组中的位置——index (4)遍历轮询:正常for循环嵌套完成 (5)数组赋值
int[][] array = new int[3][2]; array[0][0] = 10; array[0][1] = 20; array[1] = array[0]; array[0] = new int[4]; array[0][0] = 100; System.out.println(array[1][0]);//10(6)引用类型在内存中的储存
//二维数组在内存中的存储 int[][] array = new int[3][2]; //3表示有3个小数组,2表示每一个小数组有2个元素(表示小数组的长度),注意不要发生 //数组越界,会出现空指针异常(7)常见的运行时异常 inputMisMatchException:输入类型不匹配 ArrayIndexOutOfBoundException:数组索引越界 NegativeArraySizeException:数组长度不合法 NullPointerException:空指针异常 6.main方法
public static void mian(String[] args){ } //public:访问修饰限定符(公有的) //static:特征修饰符 //void:方法执行没有返回值 //main:方法名字,主要的main方法中的args参数,可否传递? (1)主方法不是我们调用的,JVM虚拟机启动的时候,虚拟机调用的 (2)主方法里面有args参数,是一个String[]类型,我们可以传递参数给JVM