一、语言基础:
参考《Java语言程序设计基础篇第10版》总结
ctrl+f:常见错误
1..概述:
(1)Java语言规范,API(应用程序接口)。JavaSE、JavaEE、JavaME。JDK。
.java编译为.class,Java虚拟机(JVM)执行。(每个类都被编译成一个独立的.class文件)
(2)注释:// /**/ 文档注释:/** */ , javadoc命令提取成HTML文件,放在类或者方法头前面。
(3)二元操作符两边各加一个空格。
(4)文件名必须与公共类名完全相同。
(5)程序设计错误:语法错误,运行时错误,逻辑错误。
(6)Java 程序可以内嵌在HTML 网页内,通过Web 浏览器下载. 给Web 客户带来生动的动画和灵活的交互性。
2..基本程序设计:
(1)加号“+”:字符串连接符。字符串常量不能跨行,可用“+”。
(2)输入输出:
① System.out:标准输出设备,默认显示器。
System.in:标准输入设备,默认键盘。
②不直接支持控制台输入:
Import java.util.Scanner;
Scanner input=new Scanner(System.in);
input.nextDouble();//(可以空格或者回车键分开 连续几个nextDouble()方法时)
(3)import:
import java.util.Scanner;
import java.util.*;
除非要在程序中使用某个类,否则关于被导人包中的这些类的信息在编译时或运行时是不被读入的。导人语句只是告诉编译器在什么地方能找到这些类。声明明确导人和声明通配符导人在性能上是没有什么差别的。
(4)标识符:
①字母、数字、下划线、美元符号($),不能以数字开头。(习惯上,$只用在机器自动产生的源代码中。)
②命名习惯:
变量和方法: 第一个单词的字母小写,而后面的每个单词的首字母大写。例如,变量radius 和area 以及方法print。
类名:每个单词的首字母大写。例如,类名ComputeArea 和System。
常量:所有字母大写,两个单词间用下划线连接。常童PI 和常量MAX_VALUE0。
(5)变量:
变量声明告知编译器根据数据类型为变量分配合适的内存空间。
(6)赋值语句、赋值表达式:
Java中赋值语句可以作为一个表达式。
表达式表示涉及值、变量和操作符的一个运算,它们组合在一起计算出一个新值。
赋值语句本质上:计算出一个值并将它赋给操作符左边变量的一个表达式。
(7)命名常量:
命名常量(named const),简称常量。Final。
final double PI=3.14159;
(8)数值数据类型和操作:
①byte short int long float double(双精度)
IEEE 754标准,计算机上表示浮点数。
②%:只有当被除数是负数时,余数才是负的。例如:-7%3 结果是-1, -12%4 结果是0, -26%-8 结果是-2, 20%-13结果是7。
求余、余数运用例子:
如果今天是星期六,10天之后是星期几呢?是星期二
Math.pow(a,b) a^b
(9)数值型直接量:
一个直接量(literal) 是一个程序中直接出现的常量值。
①整形:默认为int,十进制
long:追加L或l
二进制:0b或0B开头
八进制:0开头
十六进制:0x或0X开头。
②浮点型:默认为double
float:追加f或F
double:追加d或D
③科学计数法:
浮点型直接量也可以用ax 10^b 形式的科学记数法表示。例如,1.23456 X 10^2 可以写成1.23456E2 或者l.23456E+2,而1.23456 x10^-2 等于1.23456E-2。E (或e) 表示指数,既可以是大写的也可以是小写的。
注:为了提高可读性,Java 允许在数值直接量的两个数字间使用下划线。
long ssn =232_45_4519;
longcreditCardNumber=2324 _4545_4519_3415L;
然而,45_和_45 是不正确的。
下划线必须置于两个数字间。
(10)自增、自减操作符:
i++ 后置自增操作符
++i 前置自增操作符
(11)数值类型转换:
拓宽类型(自动)、缩窄类型(显示完成)。(强制类型转换)
注:Java 中,x1 op= x2 形式的增强赋值表达式,执行为xl = (T)(x1 op x2), 这里T是x1 的类型。因此,下面代码是正确的。
int sum =0;
sum +=4.5;// sum becomes 4 after this statement
sum += 等价于sum = (int)(sum+ 4.5).
(12)技巧、常见错误:
①tax *100 是1185.3
(int)(tax * 100)是1185
(int)(tax * 100) / 100.0 是11.85
②System.currentTimeMillis():返回从GMT 1970 年1 月1 日00:00:00 开始到当前时刻的毫秒数。(时间戳是时间开始计时的点,因为1970 年是UNIX 操作系统正式发布的时间,所以这一时间也称为UNIX 时间戳(UNIX epoch)。)
③整数溢出:
Java不会给出关于溢出的瞥告或者错误,,因此,当处理一个与给定类型的最大和最小范围很接近的数值时,要特别小心。
如果存储的浮点数很小(例如,接近于0 ),这会引起向下溢出。Java 会将它近似为0,所以一般情况下不用考虑向下溢出的问题。
④取整错误:
计算得到的数字的近似值和确切的算术值之间的不同。因为一个变量保存的位数是有限的,因此取整错误是无法避免的。涉及浮点数的计算都是近似的,因为这些数没有以准确的精度来存储。
整数可以精确地存储,整数计算得到的是精确的整数运算结果。
⑤超出预期的整数除法:
Java 使用同样的除法操作符来执行整数和浮点数的除法。当两个操作数是整数时,/ 操作符执行一个整数除法,操作的结果是整数,小数部分被截去。
要强制两个整数执行一个浮点数除法时,将其中一个整数转换为浮点数值
(13)软件开发过程:
(1)Boolean类型:true false(直接量)
(2)if if-else if-else if-else switch tiaojian?expression1:expression2;
在同一个块中,else 总是和离它最近的if 子句匹配
Switch:……
(3)常见错误:
①对布尔值的冗余测试 if (even == true) if(even)
错误:if (even = true)
②尝试:简化布尔变量賦值
③两个浮点数值的相等测试:
可以测试两个数的差距小于某个阈值,来比较它们是否已经足够接近。
(4)产生随机数:
①System.currentTimeMills()%10…… 产生一个整数,其他方法更好。
②Math.Random() 0.0~1.0之间double值,包括0.0,不包括1.0
(int)( Math.random()*10) 0~9之间整数
(5)System.exit(status)
调用这个方法可以终止程序。参数status 为0 表明程序正常结束。一个非0 的状态代码表示非正常结束。
(6)逻辑操作符:
! && || ^(异或)
产生布尔表达式
&&、|| :短路
(7)操作符优先级、结合性:
(8)调试:
Math类:java.lang包
常量:PI,E
方法:三角函数方法、指数函数方法、服务方法。
三角函数方法:
atan(a)返回值 -π/2~π/2,acos(a)返回值0~π。
指数函数方法:
服务方法:
min,max,abs :min(2.5,3)
random(): 0.0<=Math.random()<1.0 double类型 a+(int)(Math.random()*b)
char[] city={ 'D','a','l','l','a','s' };
System.out.println(city);
(4)foreach循环:
for(double e:myList){
System.out.println(e);
}
对myList 中每个元素e 进行以下操作
public static void printArray(int[] array){……}
printArray(new int[]{3,1,2,6,4,2});
public static int[] reverse(int[] list){
……
return mylist;
}
int[] list1={2,3,7,10};
int[] list2={2,4,7,7,7,10};
fill(list1,5);
fill(list2,1,5,8)//fill 8 to a partial array
⑤返回字符串:
int[] list={2,4,7,10};
System.out.println(Arrays.toString(list));