signed

QiShunwang

“诚信为本、客户至上”

JAVA基础复习2

2021/1/28 17:01:34   来源:

变量作用域

类变量
实例变量
局部变量

public claas Variable{
static int allClicks = 0; //类变量
String str = “hello world”;//实例变量
public void method(){
int i = 0;//局部变量
}
}

常量

final 常量名 = 值;
常量名一般用大写

运算符

算术运算符 + - * % ++ –
赋值运算符 =
关系运算符 > < <= >= == != insatanceof
逻辑运算符 && || !
条件运算符 ? :
拓展赋值运算符 += -= **= /=
int a = 10;
int b = 20;
System.out.print(a/(double)b); 有小数时注意范围

几个数字运算 有Long结果为long ,如果有一个为double结果为double 其余为int

++ – 一元运算符
int a = 3;
int b = a++;// 执行完这行代码后,先给B赋值,再自增
int c = ++a;//执行这行代码前,先自增,再给c赋值
System.out.print(a);
System.out.print(b);
System.out.print©;
a = 5 ;b = 3; c = 5;

//字符串连接符 + ,String
int a = 10;
int b = 20;
System.out.print(""+a+b); 1020
System.out.print(a+b+""); 30

String type = score > 60?“及格”:“不及格”;

优先级 ()

JavaDoc

@author 作者名
@version版本号
@since指明需要最早使用的jdk版本
@param参数名
@return返回值情况
@throws异常抛出情况

Scanner

Scanner scanner = new Scanner(System.in);
通过Scanner类的next()和nextLine获取字符串
在读取前我们一般需要使用hasNext()和hasNextLine()判断是否还有输入的数据
if(scanner.hasNext()){
String str = scanner.next();
}
scanner.close();//用完就要关掉,养成好习惯。凡是属于IO流的类如果不关闭就会一直占用资源

next():
1.一定要读取到有效字符才可以结束输入;
2.对输入有效字符之前遇到的空白,next()方法会自动将其去掉
3.只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
4.next()不能得到带有空格的字符串

nextLine():
1.以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符
2.可以获得空白

if(scanner.hasNextInt()){
i = scanner.nextInt();
}else{//输入的不是整数数据
}
while(scanner.hasNextDouble()){//通过循环判断是否还有输入
}

顺序结构

选择结构

if单选择结构if
if双选择结构if else
if多选择结构
嵌套的if结构
switch多选择结构
switch(expression){
case value:
//语句
break;//防止switch的穿透性
case value:
//语句
break;
default :
}
switch语句中的变量类型可以是:
byte,short,int或者char
从Java SE 7开始 支持String //会自动生成对象的hasCode来对应
同时case标签必须为字符串常量或者字面量

循环结构

while循环 do…while循环 for循环
在Java5中引入了一种主要用于数组的增强型for循环

for循环最先执行初始步骤,可以声明一种类型,但可以初始化一个或者多个循环控制变量,也可以是空语句for(;i<10;i++){}

增强for循环
for(声明语句 : 表达式){
}
int[] numbers = {10,20,30};
for(int x : numbers){
}

方法

重载
方法名称必须相同
参数列表必须不同(个数不同或者类型不同,参数排列顺序不同等)
方法的返回类型可以相同也可以不同
仅仅返回类型不同不足以成为方法的重载

可变参数不定项参数
JDK 1.5开始,Java支持传递同类型的可变参数给一个方法
在方法声明中,在指定参数类型后加一个省略号(…)
一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明

递归
递归就是A方法调用A方法,自己调用自己
利用递归可以用简单的程序解决一些复杂的问题。他通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需要少量的程序就可以描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合
递归结构包括两个部分:
递归头:(边界条件)什么时候不调用自身方法。如果没有头,将陷入死循环
递归体:什么时候需要调用自身方法

数组

声明
dataType[] arrayRefVar;

dataType[] arrayRefVar = new dataType[arraySize];

int[] nums;//声明一个数组
nums = new int[10];//创建一个数组,此处才开始分配空间

数组的四个基本特点
1.其长度是确定的。数组一旦被创建,它的大小就是不可改变的
2.其元素必须是同类型,不允许出现混合类型
3.数组中的元素可以是任何数据类型,包括基本类型和引用类型
4.数组变量属于引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的

内存分析


1.存放new的对象和数组
2.可以被所有的线程共享,不会存放别的对象引用**

1.存放基本变量类型(会包含这个基本类型的具体数值)
2.引用对象的变量(会存放这个引用在堆里面的具体地址)
方法区
1.可以被所有的线程共享
2.包含了所有的class和static变量

三种数组初始化

1.静态初始化
int[] a = {1,2,3};
Man[] mans = {new Man(1,1),new Man(2,2)};
2.动态初始化
int[] a = new int[2];
a[0] = 1;
3.数组的默认初始化
数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也按照实例变量同样的方式被隐式初始化

多维数组

在这里插入图片描述
int[][] array = {{1,2},{2,3}}

Arrays类

数组的工具类java.util.Arrays
Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用
具有以下常用功能:
1:给数组赋值:fill
2:对数组排序:sort 升序
3.比较数组: equals
查找数组元素 binarySearch 二分法查找

稀疏数组

当一个数组中大部分元素为0,或者为同一值得数组时,可以使用稀疏数组来保存该数组
稀疏数组的处理方式是:
记录数组一共有几行几列,有多少个不同值
把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模在这里插入图片描述