文章目录

  • 5.数组
  • 6.函数
  • 7.使用对象

5.数组

♌如何写一个程序计算用户输入的数字的平均数,并输出所有大于平均数的数?
♌记录每个输入的数字,计算平均数后,再检查记录下每个数字,与平均数比较,决定是否输出

public static void main(String[] args){
Scanner in = new Scanner(System.in);
int x;
int[] numbers = new int[100];
double sum=0;
int cnt = 0;
x = in.nextInt();
while(x!=-1)
{numbers[cnt] = x;
sum += x;
cnt++;
x = in.nextInt();
}
if(cnt>0)
{
double average = sum/cnt;
for(int i=0;i<cnt;i++)
{if(numbers[i]>average)
  System.out.printIn(numbers[i]);

}
system.out.printIn(sum/cnt);
}
}//安全隐患:数组容量有限,输入的数据可能超过100个

♌数组是一种容器,特点:
其中所有元素具有相同数据类型
一旦创建,不能改变大小
♌编译器不会检查是否用了有效的下标
最小的下标是0,最大的下标是数组的元素个数-1
运行出现了无效的下标,可能会导致程序终止
♌定义数组变量:
<类型>[]<名字>=new <类型>[元素个数];
!!!元素个数必须是整数,元素个数必须给出,元素个数可以是变量

//代码改进
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int x;
double sum=0;
int cnt = 0;
cnt = in.nextInt();

if(cnt>0)
{
int[] numbers = new int[cnt];
for(int i=0;i<cnt;i++)
{
	numbers[i] = in.nextInt();
	sum += numbers[i];
}
double abverage = sum/cnt;
for(int i=0;i<cnt;i++){
if(numbers[i]>average){
  System.out.printIn(numbers[i]);

}
system.out.printIn(sum/cnt);
}
}

♌.length使代码具有可扩展性

//创建二维数组
final int SIZE = 3;
int[][] board = new int[SIZE][SIZE];
boolean gotResult = false;
int numOfX = 0;
int numofO = 0;
//读入矩阵
for(int i=0;i<SIZE;i++)
{for(int j=0;j<SIZE;j++)
{board[i][j] = in.nextInt();}
}
}

6.函数

♌java的函数必须定义在类的内部,成为类的成员,定义一个函数,<返回类型><方法名称>(<参数表>){<方法体>}
在这个阶段我们要在所有的函数的返回类型前面加上关键字static,static表示这个函数属于这个类,而不属于这个类的任何对象,因此我们才可以不制造这个类的对象,而直接从main()函数中调用它。
♌代码复制时程序质量不良的表现

public static void sum(int a,int b)
{
int i;
int sum=0;
for(i=a;i<=b;i++){
sum += i;
}
System.out.printIn(a+"到"+b+"的和是"+sum);
}

可以没有return
♌Java语言在调用函数时,永远只能传值给函数
♌函数每次运行,就产生了一个独立的变量空间,在这个空间中的变量,是函数的这次运行所独有的,称作本地变量。
定义在函数内部的变量就是本地变量
参数也是本地变量

int main(){
int s1;//s1出现了
{//s1还是存在
int s2;//s2出现了
{int s3;//s1,s2,s3都存在
}
//s3不存在了
//s1,s2还是存在
}
//s2不存在了
//s1还存在
}

7.使用对象

♌Java采用Unicode 16表达字符,在所有的机器上,不管CPU,操作系统和本地语言,字符类型是一致和统一的
一个字符的常量是用单引号包围起来的一个字符,一个汉字也是Unicode的一个字符。
♌字符可以比较大小,依据是他们在Unicode表中的编号
♌对于基本数据类型,Java提供了对应的包裹类型,这些包裹类型将一个基本数据类型的数据转换成对象的形式,从而使他们可以像对象一样参与运算和传递

基本类型

包裹类型

boolean

Boolean

char

Character

byte

Byte

short

Short

int

Integer

long

Long

float

Float

double

Double

♌包裹类型的用处
获得该类型的最大最小值
Integer.MIN_VALUE
Integer.MAX_VALUE
♌字符串变量和数组变量类似,它并不存放字符串,不是字符串的所有者,而是字符串的管理者,Java的字符串还是一种特殊的不可变对象,所有的字符串操作都是产生一个新的字符串,而不是对原来的字符串的修改
♌用双引号括起来的0个或多个字符就是一个字符串字面量。“hello”(单引号是char类型,双引号是String类型)
♌String s = new String(“a string”);
让s管理这个对象

//在switch-case使用字符串
switch(s){
case "this":....break;
case "that":....break;
}