第二章
一·教材学习内容总结
1.标识符
1)用来标识类名,变量名,方法名,类型名,数组名及文件名
2)由字母,下划线,美元符号和数字组成
3)第一个字符不能是数字
4)不能是关键字
5)不能是true,false,null
6)区分大小写,hello与Hello是不同标识符
2.Unicode字符集
3.关键字一定是小写。(书P18有50个java的关键字)
4.基本数据类型
1)逻辑类型:boolean(true,false)
2)整数类型:byte(1个字节),int(4个字节),short(2个字节),long(8个字节,后缀L)
3)字符类型:char(2个字节)(转义字符:\n换行 \b退格 \t水平制表 '单引号 "双引号 \反斜线)
4)浮点类型:float(4个字节,后缀f或F,保留8位有效数字),double(8个字节,后缀d或D,可省略,保留16位有效数字)
5)观察一个字符在Unicode表中的顺序位置,可以用Int型类型转换,如(int)‘A’。
public class example1 {
public static void main(String[] args) {
char chinaword='好';
char you='\u4F60';
int position=20320;
System.out.println("汉字:"+chinaword+"的位置:"+(int)chinaword);
System.out.println(position+"位置上的字符是:"+(char)position);
position=21319;
System.out.println(position+"位置上的字符是:"+(char)position);
System.out.println("you:"+you);
}
}
5·类型转换运算
1)按精度从低到高排列
byte- short- char- int -long- float- double (当把级别低的变量的值赋给级别高的变量时,系统自动完成转换。eg.float x=100;会输出100.0)
2)精度高的赋给精度低的就要强转换:(类型名)要转换的值
int x=(int)34.89;
3)注意:当把一个Int型常量赋值给一个byte,short和char型变量时,不可超出这些变量的取值范围,否则必须进行类型转换运算。eg.byte a=(byte)128; a的值为-128 byte b=(byte)(-129); b的值为127
public class example3 {
public static void main(String[] args) {
byte b=22;
int n=129;
float f=123456.6789f;
double d=123456789.123456789;
System.out.println("b= "+b);
System.out.println("n= "+n);
System.out.println("f= "+f);
System.out.println("d= "+d);
b=(byte)n; //导致精度消失
f=(float)d; //导致精度消失
System.out.println("b= "+b);
System.out.println("f= "+f);
}
}
6.输入,输出基本数据
1)输入
Scanner reader=new Scanner(System.in);
2)输出
System.out.println() 或者 System.out.print(),前者换行,后者不换行。输出字符常量时不可以出现回车。
%d输出int类型 %c输出char类型 %f输出浮点型,最多保留6位小数 %s输出字符串
%md输出int占m列 %m.nf输出浮点型占m列,小数点保留n位。
import java.util.Scanner;
public class example4 {
public static void main(String[] args) {
System.out.println("请输入20个浮点型数,每输入一个数按回车确认");
System.out.println("最后输入数字0结束确认");
Scanner reader=new Scanner(System.in);
double sum=0;
double x=reader.nextDouble();
int count=1;
while(x!=0) {
sum=sum+x;
x=reader.nextDouble();
count++;
}
System.out.println("average="+sum/count);
}
}
7.数组:相同类型的变量按顺序组成的一种复合数据类型。
1)声明数组
a.一维数组
数组的元素类型 数组名【】;
数组的元素类型 【】数组名;
b.二维数组
数组的元素类型 数组名【】【】;
数组的元素类型 【】【】数组名;
c.注意
int []a,b[]; 是声明了一个Int型一维数组a和一个int型二维数组b
2)为数组分配元素
数组名=new 数组元素的类型【数组元素的个数】;eg.boy =new float[4];
3)数组属于引用型变量,数组变量中存放着数组的首元素的地址。
4)声明数组和创建数组可以一起完成:float boy[]=new float[4];
5)int mytwo[] []=new int [3] [4];指的是3个长度为4的数组。
6)a.length。二维数组的数组名.length的值是它含有一维数组的个数。
7)数组的引用
注意:如果想输出char型数组的引用,必须让数组a和字符串做并置运算。eg.System.out.println(" "+a);
public class example5 {
public static void main(String[] args) {
int a[]= {1,2,3,4};
int b[]= {100,200,300};
System.out.println("数组a的元素个数:"+a.length);
System.out.println("数组b的元素个数:"+b.length);
System.out.println("数组a的引用"+a);
System.out.println("数组b的引用"+b);
a=b;
System.out.println("数组a的元素个数:"+a.length);
System.out.println("数组b的元素个数:"+b.length);
System.out.println("a[0]="+a[0]+",a[1]="+a[1]+",a[2]="+a[2]);
}
}
二·教材学习中的问题和解决过程
对课本上的转换,强类型转换,因为对精度的从低到高不太了解,所以不懂转换的意义,看了书上简单的例子就能明白原来是从高到低不需要()里加类型,而从低到高则需要,精度会损失。
三·代码调试中的问题和解决过程
在练习输入数据的课本上的代码时,scanner那一行一直出错,鼠标移上去会出现一个选择框,当时并不知道是什么意思。然后就到CSDN上搜索为什么Scanner这一行会出错,原来可以点击出现的对话框里的一个import,这时的Scanner就不会报错了。
四·感悟,思考
这一章讲到了数组,只是几页点了一下数组的基本概念,但是好像真的会比c++讲的数组来得更简单些,没有指针指来指去的烦恼(可能只是还没学到后面),但是这一章讲到的数组会令人舒服些简单易懂。
老师在29页的代码里留了个作业是画出流程图,之前的老师也会有要求让我们画出某个代码的流程图,但是没有好好地落实,所以一直对流程图很陌生。但是老师课上简单讲解了一下还是回忆起了一丝印象,画好流程图是打代码前地必要准备,更好的梳理代码的逻辑,立个flag要多练流程图。