壁虎JavaSE
1.程序看做是日常生活中一系列动作的执行过程,在计算机中指一系列有序指令的集合。
2.C/C++的exe程序与硬件和操作系统有关,而class文件可以再任何安装了jdk的机器上运行,这就是跨平台性。
3.tab键在记事本里相当于八个空格。
4.在dos下运行java程序总找不到主类或者NoClassDefFoundError,那就是环境变量错误,path最后没加分号,classpath前没加".;",或者源程序里有包名,我犯得错误就是最后一个(编译正确,生成的class文件也在当前目录中),还有人说安装oracle后jdk和jre版本(java -version和javac -version)不同就会这个问题,不过我没安装oracle版本也不同,但解决完上一个问题后就对了。
5.内存像宾馆,根据需求选择不同的房间,变量像房间;变量名、房间名;变量类型、房间类型;变量值、入住的客人。
1 /* 2 * 由下面这个简短的程序可以看出,父类只要是无参构造方法,那么在new子类的时候就会自动调用 3 */ 4 public class T { 5 public static void main(String[] args) { 6 // TODO Auto-generated method stub 7 S s = new S();//若是F的构造方法有参数,而在S中没有显示地调用,那么Eclipse会提示CE 8 } 9 } 10 class F { 11 F() { 12 System.out.println("你好"); 13 } 14 } 15 16 class S extends F { 17 18 }
6.规则和规范是不同的,变量开头是字母、下划线或者美元符号.
7.一个char字符可以存放一个汉字,也只可以存放一个字母,不是两个.
8.运算符:赋值,算术,关系,逻辑,还有其他。
9.Sting类型的局部变量,赋值null和只声明是不一样的,前者会打印null,后者CE;若是成员变量,则两则一样都打印null。
10.当“+”号两端全是数值型时才执行加法操作,int age = 12,char sex = '女',char res = age + sex是错的,因为"+"号两端有一个是非数值,则执行连接,所以右端是"12女";char和String运算转化为String。
11.String不可以强制转换为char,即便String里是单个字符(会不会是因为不在同一块内存)。
12.Scanner in = new Scanner(System.in),nextInt,nextDouble,next(接受字符串),没有nextChar来接受一个字符。
13.逻辑运算符只能对boolean类型操作。
14.若是输入一个字符串那么不等于手写的另一个;若是String定义时初始化的字符串则等于另一个字符串;所以,比较字符串,一般要用equals。
15.switch里是int或者char,另一个老师说byet,short,int ,char。
16.闰年:普通年能被4整除且不能被100整除的为闰年。②、世纪年能被400整除的是闰年。
17.Random在util包和Math包里,后者支持多线程,前者需要先new,new出来的Random(10)里面的数字是上限。
18.java中while的条件只能是boolean或者返回值是boolean,所以循环t次不能while(t--),只能使用for循环或者在while循环体内部自增或者自减。
1 /* 2 * 初试人数8w,每年以25%速率增长,多少年后达到100w 3 */ 4 int year = 2013; 5 int num = 8; 6 while(num<100) { 7 num = num + num/100*25; 8 year++; 9 }
19.在dos下运行则需要jdk并设置环境,若是MyEclipse则什么都不需要;若是Eclipse则需要jdk并配置path。
20.在MyEclipse左侧双击添加断点,不是单机。
21.for(;;)这是死循环;创建数组并赋值必须在一条语句里完成。
22.util包里的Arrays提供了很多静态方法,比如BinarySearch和sort等。
23.可以将 ArrayList想象成一种“会自动扩增容量的Array;基于效率和类型检验,应尽可能使用Array,无法确定数组大小时才使用ArrayList!
24.有序数组的插入,可以从最后不断比较,若是大于待插入就交换。
25.冒泡排序比选择排序的效率低。
26.插入排序(直接和折半)就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。
1 public class TestInsertSort { 2 3 /** 4 * @param args 5 */ 6 public static void main(String[] args) { 7 int[] a = {45,8,78,1,2,6,9}; 8 insertSort(a); 9 for(int i: a){//直接打印数组显示的是hash码 10 System.out.print(i + " "); 11 } 12 13 } 14 public static void insertSort(int[] a) { 15 int len = a.length; 16 for(int i=1; i<len; i++) { 17 int j = i; 18 int temp = a[i]; 19 while(a[j-1]>temp) { 20 a[j] = a[j-1];//不是交换 21 j--; 22 if(j<=0) { 23 break; 24 } 25 } 26 a[j] = temp;//这句话一定要有,因为while里面不是交换 27 28 } 29 } 30 31 }
27.在cmd下输入path便可显示,输入classpath不行。
28.regex(正则表达式):RegularExpressions(代替了StringTokinaizer);字符串处理利器;在unix流行,perl使用regex更牛。
主要用在字符串匹配、查找和替换。例如:匹配IP(范围小于256)使用正则很好搞;从网页中揪出大量email地址发送垃圾邮件;从网页里揪出链接。
包含Matcher(用模式匹配字符串后产生的结果)和pattern。
29.那哥们后面收费了,暂且写到这。