引用類型
引用類型的變量它就是指的一個內存地址,一個位置信息
引用類型分類
類
數組
接口
枚舉
package com.zhongxin.variable;
public class RefVariable {
public static void main(String[] args) {
String s1 = "中文";
System.out.println(s1);
s1 = s1 + "英文";
System.out.println(s1);
}
}
數組
數組是一種數據結構,它是一個容器,用來盛放數據。不同類型的數組可用盛放不同類型的數據。
特點
容量確定,定義的時候必須指定數組的
大小
。類型確定,定義的時候必須聲明數組的
類型
。
分類
一維數組
多維數組
創建一個數組
創建一個數組,但是沒有初始化數組的元素。這種情況需要顯式的指定數組大小。
數據類型[ ] 數組名 = new 數據類型[size];
int[] myArr = new int[3];
創建一個數組,並已知數組的內部元素
類型[] 數組名 = {...};
int[] myArr = {0,1,2};
package com.zhongxin.variable;
public class ArrayDemo {
public static void main(String[] args) {
/*
* 定義語法1
* 數據類型[ ] 數組名 = new 數據類型[size];
* 定義語法2
* 數據類型[ ] 數組名 = {數據1,數據2,數據3};
**/
int[] myArr = new int[3];
System.out.println(myArr[2]);
int[] myArr1 = {100, 200, 300};
System.out.println(myArr1[1]);
// 數組長度
// 最大索引 = 數組長度 - 1
System.out.println(myArr.length);
System.out.println(myArr1.length);
}
}
例子:
char[] a = {'a', 'b', 'c'};
int[] b = {1, 2, 3};
long[] c = {4, 5, 6};
float[] d = {1.1f, 1.2f, 1.3f};
double[] e = {2.1, 2.2, 3.3};
boolean[] f = {true, false, false};
String[] h = {"Hello", "World"};
二維數組
二維數組定義語法1
數據類型[][] 數組名 = {{...}, {...}, {...}};
int[][] arr = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
二維數組定義語法2
數據類型[][] 數組名 = 數據類型 [二維數組長度][二維數組中一維數組的長度];
int[][] arr2 = new int[2][2];//{{0,0},{0,0}}
越界
System.out.println(arr2[0][100]);
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 100 at com.zhongxin.variable.ArrayDemo2.main(ArrayDemo2.java:18)
package com.zhongxin.variable;
public class ArrayDemo2 {
public static void main(String[] args) {
/*
* 二維數組定義語法1
* 數據類型[][] 數組名 = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
* 二維數組定義語法2
* 數據類型[][] 數組名 = 數據類型 [二維數組長度][二維數組中一維數組的長度];
* */
int[][] arr = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
System.out.println(arr[0][0]);
int[] arr1 = arr[0];
System.out.println(arr1[0]);
int[][] arr2 = new int[2][2];//{{0,0},{0,0}}
System.out.println(arr2[0][0]);
/*
System.out.println(arr2[0][100]);
越界
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 100
at com.zhongxin.variable.ArrayDemo2.main(ArrayDemo2.java:18)
*/
}
}
運算符
算術運算符
關係運算符
邏輯運算符
賦值運算符
其他運算符
算術運算符
整數類型和整數類型運算只能得到整數類型
System.out.println(10 / 3);//3
System.out.println(10.0 / 3);//3.3333333333333335
% 取模 取餘
前面的數比後面的數小 那麼就返回前面的值
System.out.println(10 % 5); // 0
System.out.println(5 % 10); // 5 前面的數比後面的數小 那麼就返回前面的值
自增 自減
int i = 1;
i++;
System.out.println(i);//2
i--;
System.out.println(i);//1
參與運算 ++在
後面
先把變量的值取出來賦值(賦值運算)再自增參與運算 ++在
前面
先把變量的值自增1,再把值取出來賦值
int x = i++;
int y = ++i;
System.out.println(x); // 1
System.out.println(i); // 2
System.out.println(y); // 3
System.out.println(i); // 3
package com.zhongxin.operator;
public class OperatorDemo {
public static void main(String[] args) {
//算術運算符
int a = 10;
int b = 5;
int c = a + b;
System.out.println(a + b);
System.out.println(c);
// 整數類型和整數類型運算只能得到整數類型
System.out.println(10 / 3);//3
System.out.println(10.0 / 3);//3.3333333333333335
// % 取模 取餘
System.out.println(10 % 5); // 0
System.out.println(5 % 10); // 5 前面的數比後面的數小 那麼就返回前面的值
// ++ 自增
// -- 自減
int i = 1;
i++;
System.out.println(i);//2
i--;
System.out.println(i);//1
//參與運算 ++在後面 先把變量的值取出來賦值(賦值運算)再自增
int x = i++;
//參與運算 ++在前面 先把變量的值自增1,再把值取出來賦值
int y = ++i;
System.out.println(x); // 1
System.out.println(i); // 2
System.out.println(y); // 3
System.out.println(i); // 3
}
}
關係運算符
關係運算符返回boolean類型
>
<
>=
<=
==
!=
package com.zhongxin.operator;
public class OperatorDemo2 {
public static void main(String[] args) {
int a = 10;
int b = 5;
System.out.println(a > b);
System.out.println(a < b);
System.out.println(a >= b);
System.out.println(a <= b);
System.out.println(a == b);
System.out.println(a != b);
}
}
邏輯運算符
&
與|
或!
非
package com.zhongxin.operator;
public class OperatorDemo3 {
public static void main(String[] args) {
System.out.println('&');
System.out.println(true & false); //false
System.out.println(false & true); //false
System.out.println(true & true); //true
System.out.println(false & false); //false
System.out.println('|');
System.out.println(true | false); //true
System.out.println(false | true); //true
System.out.println(true | true); //true
System.out.println(false | false); //false
System.out.println('!');
System.out.println(!false); //true
System.out.println(!true); //false
}
}
&& || 和& |最終結果是一樣的 可以提高性能
造成短路,當邏輯運算符左邊已經決定整個結果時,右邊不執行
int a = 10;
int b = 5;
int c = 8;
System.out.println((a < b) & (a++ > c));
System.out.println(a); // 11
a = a - 1;
System.out.println((a < b) && (a++ > c));
System.out.println(a); //10
賦值運算符
賦值運算符=
擴展賦值運算符
-=
+=
*=
/=
package com.zhongxin.operator;
public class OperatorDemo4 {
public static void main(String[] args) {
// 把10賦值給a變量
int a = 10;
a += 10;// a = a + 10 左邊和右邊進行運算之後賦值給左邊
System.out.println(a);
}
}
強制類型轉換
大的變小的
double d = 3.14;
int x = (int) d;
System.out.println(x);
隱式類型轉換
大的數據類型和小的數據類型運算時
System.out.println(10.0 / 3);
package com.zhongxin.operator;
public class OperatorDemo4 {
public static void main(String[] args) {
// 把10賦值給a變量
int a = 10;
a += 10;// a = (int)(a + 10) 左邊和右邊進行運算之後賦值給左邊
System.out.println(a);
// 強制類型轉換 大的變小的
double d = 3.14;
int x = (int) d;
System.out.println(x);
// 隱式類型轉換 大的數據類型和小的數據類型運算時
System.out.println(10.0 / 3);
}
}
三目運算符
又稱三元運算符
a ? b : c;
當a
爲真返回b
否則返回c
package com.zhongxin.operator;
public class OperatorDemo5 {
public static void main(String[] args) {
int a = 10;
int b = 5;
int max = (a > b) ? a : b;
System.out.println(max);
}
}