Java基础(a开发工具,数据类型、运算符、表达式、控制台IO)
Java基础(b 数组)
掌握java的控制台的编译、运行,了解eclipse的基本使用。掌握Java 基本数据类型、运算符与表达式;理解Java 程序语法结构,掌握顺序结构、选择结构和循环结构语法的程序设计方法;掌握控制台输出,了解控制台输入。通过以上内容,实现java开发入门。掌握数组的声明、建立、访问。掌握for-each循环 实验内容(步骤及关键代码)
第一题:
public class report_1 {
public static void main(String args[]){
byte b = 0x55;
short s = 0x55ff;
int i = 1000000;
long l = 0xffffL;
char c = 'a';
float f = 0.23F;
double d = 0.7E-3;
boolean B = true;
String S = "这是字符串类对象";
System.out.println("字节型变量 b="+b);
System.out.println("短整型变量 s="+s);
System.out.println("整型变量 i="+i);
System.out.println("长整型变量 l="+l);
System.out.printf("字符型变量 c=%cn",c);
System.out.printf("浮点型变量 i=%6.3fn",f);
System.out.println("双精度变量 d="+d);
System.out.println("布尔型变量 B="+B);
System.out.println("字符串类对象 S="+S);
}
}
第二题:
public class report_1 {
static int i = 1;//类的成员变量;
public static void main(String args[]){
int j=2;
{
int k=3;
System.out.println("i="+i);
System.out.println("k="+k);
}
System.out.println("j="+j);
System.out.println("k="+k);
}
}
答:对于java代码来讲,掌握变量的适用范围很重要,在一个函数或函数代码块中定义的变量称为局部变量,在该代码程序中就出现了局部变量k,但该局部变量k在函数被执行时创建,在函数结束时就被销毁。局部变量在进行取值操作前必须被初始化。
第三题:
import javax.swing.*;
public class report_1 {
public static void main(String args[]){
int a=1,b=2,c=0;
if(a0);
if(c==3)
System.out.println("c="+c+"说明c=a+b执行到了");
else
System.out.println("c="+c+"说明c=a+b没有执行到");
}
}
改为|:
public class report_1 {
public static void main(String args[]){
int a=1,b=2,c=0;
if(a0);
if(c==3)
System.out.println("c="+c+"说明c=a+b执行到了");
else
System.out.println("c="+c+"说明c=a+b没有执行到");
}
}
改为&&:
public class report_1 {
public static void main(String args[]){
int a=1,b=2,c=0;
if(a0);
if(c==3)
System.out.println("c="+c+"说明c=a+b执行到了");
else
System.out.println("c="+c+"说明c=a+b没有执行到");
}
}
改为&:
public class report_1 {
public static void main(String args[]){
int a=1,b=2,c=0;
if(a0);
if(c==3)
System.out.println("c="+c+"说明c=a+b执行到了");
else
System.out.println("c="+c+"说明c=a+b没有执行到");
}
}
思考原因解答:
逻辑运算符的作用不同。
逻辑与&,无论左边真假,右边都要执行。
短路与&&如果左边为真,右边执行;如果左边为假,右边不执行
短路或||,如果左边为假,右边执行;如果左边为真,右边不执行
第四题:
控制台输出
public class report_1 {
public static void main(String args[]){
System.out.println(1+'1'+"1"+1);
System.out.println(1+1+"1"+'1');
System.out.println("1"+1+'1'+1);
}
}
第五题:
import java.util.Scanner;
public class report_1 {
public static void main(String[]args){
//构造一个输入对象input ,数据来源是键盘输入流System.in
Scanner input = new Scanner(System.in);
String name = input.next();
//从流中读一个单词
int age = input.nextInt();
//从流中读一个单词并转换为整数
System.out.println(name+"is "+age+" year old.");
}
}
第六题:
public class report_2 {
public static void main(String args[]){
int a[] = new int[3];
int b[][] = new int[2][3];
a[0]=10;
a[1]=10+a[0];
a[2]=a[0]+a[1];
b[0][0]=0;
b[0][1]=1;
b[0][2]=2;
b[1][0]=3;
b[1][1]=4;
b[1][2]=5;
System.out.println("a["+0+"]="+a[0]);
System.out.println("a["+1+"]="+a[1]);
System.out.println("a["+2+"]="+a[2]);
System.out.println("b["+0+"]["+0+"]="+b[0][0]);
System.out.println("b["+0+"]["+1+"]="+b[0][1]);
System.out.println("b["+0+"]["+2+"]="+b[0][2]);
System.out.println("b["+1+"]["+0+"]="+b[1][0]);
System.out.println("b["+1+"]["+1+"]="+b[1][1]);
System.out.println("b["+1+"]["+2+"]="+b[1][2]);
}
}
将第5行删除,
将第3行从int a[] = new int[3];改为int a[] = new int[]{10,20,30};
再编译运行。
或拆分成两条语句 int a[]; a = new int[]{10,20,30};
或直接用简化形式 int a[] = {10,20,30};
改法一:
public class report_2 {
public static void main(String args[]){
int a[] = new int[]{10,20,30};
int b[][] = new int[2][3];
a[0]=10;
a[1]=10+a[0];
a[2]=a[0]+a[1];
b[0][0]=0;
b[0][1]=1;
b[0][2]=2;
b[1][0]=3;
b[1][1]=4;
b[1][2]=5;
System.out.println("a["+0+"]="+a[0]);
System.out.println("a["+1+"]="+a[1]);
System.out.println("a["+2+"]="+a[2]);
System.out.println("b["+0+"]["+0+"]="+b[0][0]);
System.out.println("b["+0+"]["+1+"]="+b[0][1]);
System.out.println("b["+0+"]["+2+"]="+b[0][2]);
System.out.println("b["+1+"]["+0+"]="+b[1][0]);
System.out.println("b["+1+"]["+1+"]="+b[1][1]);
System.out.println("b["+1+"]["+2+"]="+b[1][2]);
}
}
改法二_int a[];a = new int[]{10,20,30}:
public class report_2 {
public static void main(String args[]){
int a[];
a = new int[]{10,20,30};
int b[][] = new int[2][3];
a[0]=10;
a[1]=10+a[0];
a[2]=a[0]+a[1];
b[0][0]=0;
b[0][1]=1;
b[0][2]=2;
b[1][0]=3;
b[1][1]=4;
b[1][2]=5;
System.out.println("a["+0+"]="+a[0]);
System.out.println("a["+1+"]="+a[1]);
System.out.println("a["+2+"]="+a[2]);
System.out.println("b["+0+"]["+0+"]="+b[0][0]);
System.out.println("b["+0+"]["+1+"]="+b[0][1]);
System.out.println("b["+0+"]["+2+"]="+b[0][2]);
System.out.println("b["+1+"]["+0+"]="+b[1][0]);
System.out.println("b["+1+"]["+1+"]="+b[1][1]);
System.out.println("b["+1+"]["+2+"]="+b[1][2]);
}
}
改法三_int a[] = {10,20,30}:
public class report_2 {
public static void main(String args[]){
int a[]={10,20,30};
int b[][] = new int[2][3];
a[0]=10;
a[1]=10+a[0];
a[2]=a[0]+a[1];
b[0][0]=0;
b[0][1]=1;
b[0][2]=2;
b[1][0]=3;
b[1][1]=4;
b[1][2]=5;
System.out.println("a["+0+"]="+a[0]);
System.out.println("a["+1+"]="+a[1]);
System.out.println("a["+2+"]="+a[2]);
System.out.println("b["+0+"]["+0+"]="+b[0][0]);
System.out.println("b["+0+"]["+1+"]="+b[0][1]);
System.out.println("b["+0+"]["+2+"]="+b[0][2]);
System.out.println("b["+1+"]["+0+"]="+b[1][0]);
System.out.println("b["+1+"]["+1+"]="+b[1][1]);
System.out.println("b["+1+"]["+2+"]="+b[1][2]);
}
}
public class report_2 {
public static void main(String args[]){
int a[] = {10,20};
int b[] = new int[]{1,2,3};
a=b;
System.out.println("现在用传统的for循环访问数组");
for(int i=0;i
答:已验证数组是对象、数组名是引用。
(4)创建二维数组时,可指定各维的长度(例如程序EXP2_4的第4行,二维数组b),或至少指定第一维的长度。在下图中,x[0]、x[1]、x[2]都是引用,各自指向一个一维数组。
所以,上图中的二维数组x可以有以下定义方法:
方法一:int x[][] = new int[3][4]; //自动初始化为0
方法二:int x[][] = new int[][]{ {1,2,3,4}, {5,6,7,8}, {9,10,11,12} };
或直接int x[][] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
方法三:每行的一维数组单独定义
int[][] x = new int[3][];//至少指定第一维的长度,x指向一个一维数组对象,该对象中的每个元素都是引用
x[0] = new int[4];//x[0]指向一个一维数组对象,对象中每个元素都是整数
x[1] = new int[4];
x[2] = new int[4];
这意味着每一行的长度可能不同。
例如,另外定义一个二维数组,代码和示意图如下:
int[][] x = new int[3][]; // x指向一个一维数组对象,对象中每个元素都是引用
x[0] = new int[3]; //x[0]指向一个一维数组对象,对象中每个元素都是整数
x[1] = new int[1];
x[2] = new int[2];
(5)在一行中声明多个数组
在声明一个数组时,[]可放在数组引用变量的前边,也可放后边。但在一行中声明多个数组时,要注意了。阅读下面的代码,分析a和b分别是什么类型,再编程验证下面的几段代码是正确还是错误。
① int a [] = {1,2,3}, b;
b = a;
答:
a的类型:整型一维数组
b的类型:整型变量
错误
② int a [] = {1,2,3}, b[];
b = a;
答:
a的类型:整型一维数组
b的类型:整型一维数组
正确
③ int [] a = {1,2,3}, b;
b = a;
答:
a的类型:整型一维数组
b的类型:整型一维数组
正确
④ int [] a = {1,2,3}, b[];
b = a;
答:
a的类型:整型一维数组
b的类型:整型二维数组
错误
⑤ int a[][] = {{1,2,3},{4,5,6}}, b[];
b = a;
答:
a的类型:整型二维数组
b的类型:未知
错误
⑥ int []a[] = {{1,2,3},{4,5,6}}, b[];
b = a;
答:
a的类型:整型二维数组
b的类型:整型二维数组
正确
⑦ int [][]a = {{1,2,3},{4,5,6}}, b[];
b = a;
答:
a的类型:整型二维数组
b的类型:未知
错误
⑧ int [][]a = {{1,2,3},{4,5,6}}, b;
b = a;
答:
a的类型:整型二维数组
b的类型:整型二维数组
正确 (6)用for-each循环访问一维数组
public class report2 {
public static void main(String args[]){
int []a={1,2,3};
for(int x:a)
System.out.println(x);
}
}
(7)用for-each循环访问二维数组
public class report2 {
public static void main(String args[]){
int [][]a = {{1,2,3},{4,5,6}};
for(int []line :a)
for(int x: line)
System.out.println(x);
}
}
(8)二维数组的编程练习
下面的程序,计算每个同学的选修课的平均成绩。每个同学选修的课程数量可能不相同。computeAV(int[][]score)函数接收二维数组作为形参,动态创建一维double数组来存放平均成绩。完善它。
补充前的代码:
public class Test{
static double[] computeAV(int [][]score){
}
}
public class report2 {
public static void main(String args[]){
//3位同学
int score[][] = {
{56,98,76,67},
{65,76},
{87,88,65}
};
double []av = computeAV(score);
for(int i=0;i
补充后的代码:
public class text {
static double[] computeAV(int[][]score){
double []result = new double[score.length];
for(int i=0;i 


