第二章学习笔记

 一、教材学习内容总结

1、标识符的使用方法以及语法规则

2、Unicode字符集,及Unicode字符集与ASCII码之间的关系(U表前128个字符刚好是A码)

3、常用的基本数据类型(string不在基本数据类型内,本质是个类)

4、基本数据类型的精度高低顺序,及高精度转低精度时造成的精度损失

5、使用Scanner的类方法输入基本型数据

6、掌握格式控制符以及使用方法

7、数组的声明以及使用

8、使用length方法得到数组的长度

9、数组的引用使用规则以及本质变化

10、求二十个float值的平均数

package OneWeek;

import java.util.Scanner;

public class Two {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("请输入若干个数,每输一个数回车确认");
		System.out.println("最后输入数字为零结束输入操作");
		Scanner reader=new Scanner(System.in);
		double sum=0;
		double x=reader.nextDouble();
		int i=1;
		while(x!=0) {
			sum=sum+x;
			x=reader.nextDouble();
			i++;
		}
		System.out.println("sum="+(sum/i));
	}

}

11、 判断输入值是否在默认数组中


package OneWeek;
import java.util.*;
public class One {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int start=0,end,middle;
		double a[]= {2.31,5.11,6.21,8.651,8.1131,7.21,6.11,7.361,4.11,11.21,12.61,1.1121,9.651,3.541,17.51,11.891,16.211,5.6651,8.6981,5.1341};
		int N=a.length;
		//冒泡法从小到大排列数组a
		for(int i=0;i<N;i++) {
			for(int j=i+1;j<N;j++) {
				if(a[j]<a[i]) {
					double t=a[j];
					a[j]=a[i];
					a[i]=t;
				}
			}
		}
		Scanner scanner=new Scanner(System.in);
		System.out.println("输入一个数,程序判断该数是否在数组中:");
		double number=scanner.nextDouble();
		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;
			middle=(start+end)/2;
			count++;
			if(count>N/2)
				break;
		}
		if(count>N/2) 
			System.out.printf(number+"不在数组a中.\n");
		else
			System.out.printf(number+"在数组a中.\n");
	}

}

 

二、教材学习中的问题和解决过程

1、问题:书本p21中对于flaot、double数字大小的对比:

float x=0.4F;
double y=0.4;

看似相同的小数,在比较的时候x值其实是要大于x值得。

解决:实际存储中,由于float型变量分配四个字节内存,占32位,所以最多能够保留8位有效数字。而double型变量分配八个字节内存,占64位,可以保留16位有效数字,因此,看似相同的数字在实际比较的时候,是要比较16位的,而x值从第九位数字开始就已经不受float控制,出现随机值,所以从大小来说,x值是要大于y值得。

 

三、代码调试中的问题和解决过程

暂无

四、学习思考与感悟

看似简单的基础,其实牵扯着许多本质的知识,比如各种基本数据类型的存储方式、数组引用的原理等,万丈高楼平地起,想要技术更进一步,脚下的基础其实才是关键所在,虽然不同于c语言这种机器语言,但java在我眼中还是有着许多c的身影,或者说,我们眼前的那么多语言,其本质都离不开c吧。


五、学习进度条

   代码行数(新增/积累)  博客量(新增/累计) 学习时间(新增/累计)     重要成长
   目标               7000行              30篇                400h  
 第一周              378/378               2/2               14/14  
 第二周              127/505               1/3                 5/19  

猜你喜欢

转载自blog.csdn.net/Huangxu_MIKU/article/details/82831871