201711671112 《Java程序设计》第二周学习总结
教材学习内容总结
1、用来标识类名、变量名、方法名、类型名、数组名及文件名的有效字符序列为标识符;标识符是一个名字
2、标识符由字母、下画线、美元符号和数字组成,第一个字符不能是数字字符,不能是关键字,不能是true、false和null,字母区分大小写;关键字就是具有特定用途或被赋予特定意义的一些单词byte、char、short、return、do、double....
3、Java8种基本数据类型
①逻辑型boolean、 常量为true,false,声明时可以赋初值
②整数型byte(分配1个字节内存,占8位)、short(分配2个字节内存,占16位)、int(分配4个字节内存占32位)、long(常量用后缀L来表示,分配8个字节内存,占64位)、
③浮点型float(小数点表示法231.0f、指数表示法2e40f :2乘10的40次方,必须有f或F,保留8位小数,分配4个字节内存,占32位)、double(指数表示法1e-90:1乘10的-90次方,保留16位小数,分配8个字节内存,占64位,后缀d或D可有可无)
④字符型char(分配2个字节内存,占16位) 转义字符常量 \n换行、\b退格、\‘单引号,可以用字符在Unicode表中的排序位置的十六进制转义(需要用u做前缀) '\u0041'表示字符A,'\u0061'表示字符a
分别用类型转换来显示一些字符在Unicode表中的位置,以及表中某些位置的字符
public class Example2_1 {
public static void main(String[] args) {
char you='\u4F60';
int position=20320;
System.out.println(position+"位置上的字符:"+(char)position);
position=21319;
System.out.println(position+"位置上的字符:"+(char)position);
System.out.println("you:"+you);
}
}
4、按精度从低到高排列 byte、short、char、int、long、float、double
①当把级别低的变量的值赋给级别高的变量时,系统自动完成数据类型的转换;
②当把级别高的变量的值赋给级别低的变量时,必须使用类型转换运算 (类型名)要转换的值; int x=(int)34.89【输出34】; long y=(long)56.98F;
③ byte a=(byte)128;
byte b=(byte)(-129); 得到a、b值为-128,129
类型转换
public class Example2_2 {
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);
}
}
5、可以使用Scanner类创建一个对象 Scanner reader=new Scanner(System.in);
计算出和
public class Example2_3 {
public static void main(String[] args) {
//请输入若干个数,每输入一个数回车确认
//最后输入数字0结束输入操作
Scanner reader=new Scanner(System.in);
double sum=0;
double x=reader.nextDouble();
while(x!=0) {
sum=sum+x;
x=reader.nextDouble();
}
System.out.println("sum= "+sum);
}
}
6、System.out.println()或者System.out.print()可以输出串值、表达式的值,区别是前者输出数据后换行,后者不换行
System.out.println(m+“个数的和为”+sum);+:字符串的连接
%d:输出int类型数据 %c:输出char数据 %f:输出浮点型数据,小数部分最多六位
%s:输出字符串数据 %m.nf:输出的浮点型数据占m列,小数点保留n位
7、数组是相同类型的变量按顺序组成的一种复合数据类型,创建数组需要经过声明数组和为数组分配变量两个步骤(可同时完成)
声明数组:一维 float boy[ ] /float [ ] boy 二维 char cat[ ]/ char [ ]cat
可以一次声明多个数组 int [ ] a,b 等价于int a[ ],b[ ] 声明了两个一维数组;
int [ ] a , b[ ] 等价于int a[ ],b[ ] [ ] 声明一个int一维数组和一个int 二维数组
为数组分配变量
数组名=new 数组元素的类型名[ 数组元素的个数 ] ;boy=new float [ 4 ];
数组属于引用型变量,数组变量中存放着数组的首元素地址,通过数组变量的名字加索引使用数组元素 boy[0]=12
8、数组元素的个数为数组的长度。对于一维 “数组名.length”的值就是数组中元素的个数,二维数组的“数组名.length”为他含有的一维数组的个数。
9、创建数组后,系统会给数组的每个元素一个默认值,在声明数组的同时也可以给数组的元素一个初始值(但是得为每个元素都赋值)
10、数组属于引用型变量。因此两个相同类型的数组如果具有相同的引用,他们就有完全相同的元素
判断用户输入的一个整数是否在已知的数组中(折半法)
import java.util.Scanner;
public class Example2_5 {
public static void main(String[] args) {
int start=0,end,middle;
int a[]= {12,45,67,89,123,-45,67};
int N=a.length;
for(int i=0;i<N;i++)
for(int j=i+1;j<N;j++) {
if(a[j]<a[i]) {
int t=a[j];
a[j]=a[i];
a[i]=t;
}
}
}
Scanner scanner=new Scanner(System.in);
System.out.println("输入整数,程序判断该整数是否在数组中:");
int number=scanner.nextInt();
int count=0;
end=N;
middle=(start+end)/2;
while(number!=a [middle]) {
if(number>a [middle])
start=middle;
else if(number<a[middle])
end=middle;
}
}
代码调试中的问题和解决过程
不熟悉java的调试过程,多试几次就记得了。
其他感悟
多调试程序,多打代码,才会上手。
参考资料
《Java2实用教程(第五版)》