java第二周学习总结

《面向对象程序设计(java)》第二周学习总结

实验时间2018-9-6

1,第三章知识点总结

一、基本数据类型:分为整型(4),浮点型(2),字符型,布尔型,一共8种
1.整型需要注意的:JAVA整型的范围与运行JAVA代码的机器无关的,所以很难发生整数溢出的情况,原理是JAVA的每一种数据类型的取值范围都是规定了的,不能改动。byte占1个字节,范围是-128到127;short占2个字节,范围是3W左右;int占4个字节,范围在20亿左右;long占8个字节,需要注意的是有个后缀L。JAVA没有无符号类型。
2.浮点类型:float占4个字节,后缀为F;double占8个字节;JAVA浮点型是二进制系统表示的,所以无法精确表示1/10,所以不适用于要求不能舍入误差的高精度计算系统中,如金融系统。Double类有3个常量:Double.POSITIVE_INFINITY表示无限大,Double.NEGATIVE_INFINITY表示无限小,Double.NaN表示不是一个数字,但是JAVA所有非数值都认为是不同的,所以比较NaN时要用方法:Double.isNaN(Object o);  
3.字符型:在JAVA中用UTF-16编码描述一个代码单元的。代码点是指可用于编码字符集的数字,UTF-32:用4个字节既32位表示代码点,消耗资源过大;UTF-8:使用一至四个字节的序列对编码 Unicode 代码点进行编码,很好的节约资源,用于AJAX返回的XML很好。UTF-16:使用一个或两个未分配的 16 位代码单元的序列对 Unicode 代码点进行编码;\u表示字符转义号,还可以用于“”和‘’外。
4.布尔型:boolean:false和true,需要注意的是:java中不能非0值当true,0当false,不支持直接的转换。


二、变量:关键字final表示的是一个常量,一旦赋值后不能改变,习惯常量名用大写。


三、运算:浮点数被0除得到无穷大或NaN,而整型会产生异常;strictfp关键字可以用在域上,包括类,那么里面使用严格的浮点计算;
1.运算中的类型转换:如果两个数中有一个是double类型的,那么另一个也将转换为double类型;如果两个数中有一个是float类型的,那么另一个也将转换为float类型;如果两个数中有一个是long类型的,那么另一个也将转换为long类型;否则,两个操作数都将被转换为int类型.Math类提供了很多关于运算的静态方法
2.移位运算:<<左移操作,所有操作数向左移动,每移一位最右边用0补充;>>带符号位右移:连同符号位一起右移,每移一位最左边用符号位补充;>>>无符号右移:连同符号位一起右移,每移一位最左边用0补充。右边的参数需要进行模32位运算(long进行64位模运算)。注意1<<31得到的结果是负数:-2147483648,JAVA在32位下最高位为1其余为0的时候表示的并不是-0.而是32位下最小负整数:-2147483648


四、字符串:代码点—codePoint.
1.String常用API:
char charAt(int index)返回指定位置的代码单元。
int codePointAt(int index)返回从给定位置开始或结束的代码点。
int offsetByCodePoints(int startIndex,int cpCount)返回从startIndex代码点开始,位移cpCount后的代码点索引。
int codePointCount(int startIndex,int endInex)返回起始位置到结束位置之间代码点的数量。
int compareTo(String other)如果字符串位于other之前,返回一个负数;如果字符串位于other之后,返回一个正数;如果相等,返回0。
boolean startsWith(String startstr)如果字符串是以startstr开头,返回true。
boolean endsWith(String endstr)如果字符串是以endstr结尾,返回true。
boolean equals(Object other)2个对象相等,返回true。
boolean equalsIgnoreCase(String other)2个字符串忽略大小写相等返回true。
int indexOf(String str)||(String str,int fromIndex)||(int cp)||(int cp,int fromIndex)从fromIndex位置开始计算,返回字串或者代码点第一次出现的位置。
int lastindexOF 同上,不过是返回字串最后一次出现的位置。
int length()返回串长度,准确的说是返回代码单元数量。
String substring(int begin)||(int begin,int end)截取字符串。
String toLowerCase() ;String toUpperCase();分别是转小写,和转大写。
String trim();删除原始字符串头部和尾部空格。
String replace(String old,String new)用NEW去替换OLD,没有构造正则好用。
2.StringBuilder 常用API:和类StringBuffer的用法基本一样,只是StringBuffer支持多线程,效率稍微低。


五、输入输出:
1、Scanner类:可以用一个给定的输入流创建该对象,例如用标准输入流创建:
Scanner s=new Scanner(System.in),也可以用一个File对象构造一个Scanner对象,如:
Scanner s=new Scanner(new File(String FilePath));
作为一个读取的类,Scanner主要有以下的方法:String nextLine();String next();Int nextInt();
double nextDouble();
(java6 有Console类可以读取密码不可见:Console cons=System.console(); cons.readPassword(""))
相应的有一些检测的hasNext方法;
2、PrintWriter类:可以用一个File对象构造一个PrintWriter对象:
PrintWriter pw=new PrintWriter(new File(String FilePath));
作为一个写出的类,PrintWriter主要的方法有:write(String str),print,println,printf等。


六、控制流程:do_while语句中do语句块里的局部变量在while的()已经没有生命周期!for语句中的()里的变量可以在{}语句块中使用。
switch语句的case标签必须是整数或者枚举类型常量,如果在case分支语句的末尾没有break语句,那么会接着执行下一个case分支语句。
带标签的break语句,标签必须放在希望跳出的最外层循环之前,紧跟一个冒号。


七、大数值:BigInteger和BigDecimal分别实现了任意长度的整形和任意长度的浮点型。都可以用valueOf(long/double)方法通过一个基本的类型去构造他们,他们的运算方法一样,如下:
add:加法;subtract:减法;multiply:乘法;divide:除法;mod:求余数;这两个类都实现了Comparable这个接口,于是有compareTo比较大小的方法。


八、数组:在java 6中的Arrays类有方法Object[] copyOf(Object oldArray[],int length)该静态方法将一个数组的值复制到一个新数组中,第2个参数指定新数组的长度,并返回新数组,如果新数组有多余元素,则数值型被赋值0,boolean型被赋值false。如果长度小于原始数组长度,只拷贝最前面的数据元素。以上的方法只有JDK6.0版本以上才有。
System.arraycopy(from[],int fromIndex,to[],int toIndex,int conut)方法也是数组的拷贝,参数含义是从数组from的位置是fromIndex的元素开始拷贝总数为conut个元素到数组to从toIndex位置开始,该方法需要注意数组to必须有足够的空间存放拷贝的元素。
Math.ronud是四舍五入,Math.random是返回一个0到1(不含0,不含1)的随即浮点数,用N乘以这个浮点数,就可以得到0到N-1之间的一个随即数。
数组可以使用for(:)这个循环,Arrays有很多静态的方法提供使用:
toString(type[]a):将数组转化为字符串
copyOf在6.0以后的版本才有,并且参数可以为3个(type[]a,int start,int end),start-end表示要拷贝的长度。
sort:快速排序算法的排序。
binarySearch(type[]a,type v)||(type []a,int start,int end,type v)用二分搜索法查找一个元素,成功返回下标值,否则返回一个负数r,-r-1是为保持A的有序应插入的位置,我大概估计了下,既然是2分搜索,那么这个数组里的元素应该是通过实现了Comparable这个接口排过序的,这个方法要比自己去循环查找要快很多,不过要进行一次sort方法,不知道会不会在整体上影响效率。
fill(type[],type v)将数组的所有元素的值设置为V。
equals(type[]a,type[]b)如果a,b大小相同,并且下标相同的元素也相等,返回true。
java实际上是没有多维数组的,只有数组的数组,这让java十分的灵活可以创造任意部规则的数组。

2、实验内容和步骤

实验1:编写java 应用程序,输出以下4个表达式的值。

    int i=1;

    double d=1.0;

   (1) 45+45*50%i--

   (2) 1.5*3+d++

   (3) (true)&&(3>4)

   (4) (i>0)||(i<0)

 

实验2:编写包含以下代码片段的java应用程序,输出字符串类对象s3的值。

String s1=“Hello!”;

String s2=“World”;

String s3=s1+s2;

 

实验3:更改实验2中s1s2s3为StringBuilder类对象,观察程序运行结果并与实验2结果进行对比,理解String类对象与StringBuilder类对象的区别。

实验4:在命令行方式下调试运行下列程序,理解java应用程序命令行参数的用法。

public class Message

{  

public static void main(String[] args)

  {     

  if (args[0].equals(“-h”)) System.out.print(“Hello”);

    else if(args[0].equals(“-g”); System.out.print(“goodbye,”);

  for(int i=1;i<args.length;i++)

    System.out.print(“  ”+args[i]);

  System.out.println(“!”);

  }

}

实验5:Eclipse环境下导入第3章示例程序InputTest.java步骤:

(1) 新建java project如下图:

(2) 选择File->import->File ystem->Next,打开文件导入窗口如下图,点击上方Browse选择导入源程序并选中,点击下方Browse选择源程序导入位置为新项目InputTest/src位置后,点击finish完成导入。

(3) 打开InputTest项目src文件夹的缺省包,双击InputTest.javaIDE源程序编辑区打开文件。

(4) 右键单击InputTest.java文件名打开快捷菜单,选择Run as->java application运行此程序,结合程序运行结果,理解代码中Scanner类对象用法,掌握java控制台输入方法。

 

实验6按照实验5的操作步骤,导入WriteReadFileTest.java示例程序,结合程序运行结果理解程序代码,观察项目文件夹下文件myfile.txt的内容,掌握文件的输入输出操作。

 

实验7:按照实验5的操作步骤,导入第3章示例程序,每个示例程序从语法、算法两个角度总结学习内容。

(1)测试Retirement.java,Retirement2.java,LotteryOdds.java掌握循环控制结构;

  

2)测试BigIntegerTest.java,掌握大数值类的用法;

 

(3)测试LotteryDrawing.java,掌握数组的用法;

(4)测试CompoundInterest.java,掌握多维数组的用法;

 

(5)测试LotteryArray.java,掌握不规则数组的用法。

 

猜你喜欢

转载自www.cnblogs.com/fairber/p/9609703.html