1. 运算符
s += 1 等价于 s = (s的数据类型)(s+1) 即进行了一次强制转换
&&与& 的区别:&&只要左边false,右边就不执行,同理||和|也是如此
三目运算符: 比较表达式?表达式1:表达式2 如果是true,就把表达式1作为结果,反之把表达式2作为结果
//得出三个数中的最大值
int max = (a>b)?((a>c)?a:c):((b>c)?b:c);
2. 实现键盘数据的录入
import java.util.Scanner;
class ScannerDemo{
public static void main(String[] args){
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();
Scanner scan = new Scanner(System.in);
String str1 = scan.next();
}
}
3. 方法(函数)
即是能完成特定功能的代码块
class FunctionDemo{
public static void main(String[] args){
int x=10;
int y=10;
int result = sum(x,y);
System.out.println(result);
}
//两数求和
public static int sum(int a,int b){
int c = a+b;
return c
}
}
方法注意事项:
(1)不调用不执行
(2)方法与方法是平级关系,不能嵌套定义
方法重载:
在同一个类中,允许存在一个以上的同名方法,只要他们的参数个数或者参数类型不同即可
4. 数组
4.1 一维数组
定义格式:(效果是一样的,推荐第一种)
(1)int [] a; 定义一个int类型的数组a变量
(2)int a[]; 定义一个int类型的a数组变量
数组属性:
(1)获取数组的长度 格式:数组名.length
(2)
数组初始化:
(1)动态初始化:只指定长度,并为每个数组元素赋予值
格式:数据类型[] 数组名 = new 数据类型[数组长度];
int[] arr = new int[3];
(2)静态初始化:给出初始化值,由系统决定长度
int[] arr = {1,2,3};
遍历数组:
public static void printArray(int[] arr){
for (int i=0; x<arr.length; i++){
if (i==arr.length-1){
System.out.println(arr[i]);
}
else:{
System.out.println(arr[i]+" ");
}
}
}
数组逆序:
public static void reverse(int[] arr){
for (int start=0, end=arr.length-1; start<=end;start++,end--){
temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
}
}
4.2 二维数组
定义格式:(效果是一样的,推荐第一种)
(1)int [][] a = new int[m][n]; 定义一个int类型的二维数组a变量 n可以不填,之后在动态初始
(2)int a[][] = new int[m][n]; 定义一个int类型的a数组变量
(3)int [] a[] = new int [m][n];
二维数组的遍历:
//二维数组的length就是一维数组的个数
for(int x=0; x<arr.length; x++){
for (int y=0; y<arr[x].length; y++){
System.out.println(arr[x][y]+" ");
}
System.out.println(arr[x][y]);
}
打印杨辉三角:
(1)任何一行的第一列和最后一列都是1
(2)从第三行开始,每一个数据时它上一行的前一列和它上一行的本列之和
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个数据:");
int n = nextInt();
int [][] arr = new int[n][n];
//给这个二维数组的任何一行的第一列和最后一列赋值为1
for(int x=0; x<arr.length; x++){
arr[x][0] = 1;
arr[x][x] = 1;
}
//按规律赋值
for (int x=2;x<arr.length;x++){
//空出最后一列和第一列
for (int y=1; y<=x-1; y++){
arr[x][y] = arr[x-1][y-1] + arr[x-1][y];
}
}
//遍历三角形
for(int x=0; x<arr.length; x++){
for (int y=0; y<=x; y++){
System.out.println(arr[x][y]+"\t");
}
}
}
5. java中的内存分配
(1)栈:存储局部变量(方法定义中和方法声明上的都是局部变量)
栈内存中的数据用完(脱离作用域)就释放掉
(2)堆:存储new出来的东西
堆内存的特点:1.每一个new出来的东西都有地址值 2. 每个变量都有默认值(0, 0.0,‘\u0000’, false, null)3. 使用完毕就变成了垃圾,但是并没有立即回收,会在垃圾回收器空闲的时候回收。
(3)方法区
(4)本地方法区:和系统相关
(5)寄存器(给cpu使用)