第1章
1、java特性
简单性,java语法是一个C++语法的纯净版本。
面向对象,java将重点放在数据和对象的接口上。java与C++的主要不同点在于多继承,在java中实现多继承的机制是采用接口以及元类模型。
网络技能,健壮性,安全性,体系结构中立,
可移植性,java的基本类型的大小以及有关算法都做了明确的规定,java规范没有依赖具体实现。例如:java中的int类型永远是32位的整数,在其他语言中就不一定。其他语言只有一种规定就是int类型的大小不能低于shortint,不能高于long int。java中的字符串使用标准的Unicode格式存储。
解释性,高性能,多线程,动态性。
2、java发展史
java以C++为基础。
java版本发展过程
版本 年份 语言新特性 类与接口的数量
1.0 1996 语言本身 211
1.1 1997 内部类 477
1.2 1998 无 1524
1.3 2000 无 1840
1.4 2004 断言 2723
5.0 2004 泛型 for each 可变元参数 自动打包 元数据 枚举 静态导入 3279
6 2006 无 3777
第3章:基本程序设计结构
1.简单的应用程序
1 public classFirstSample2 {3 public staticvod main(String[] args)4 {5 System.out.println("Hello World!")6 }7 }
类名大写字母开头,若名字由多个单词构成,每个单词第一个字母都要大写;
源代码电网文件名必须与公共类的类名相同,并用java做拓展名;
java虚拟机从指定类的main方法开始执行;
main方法必须声明为public,必须是静态的;
2.注释
行注释: //
段注释: /* */
生成文档: /** **/
3.数据类型
java是强类型语言,即必须为每一个变量声明一种类型;
java一共有8种基本类型:4种整型 2 种浮点型 1种字符类型char 1种bool类型;
java中所有数值类型所占用的字节数与平台无关;
4.变量
声明一个变量后,必须用赋值语句对变量进行显式初始化;
可以将声明放在代码中的任意位置;
利用关键字final指示常量, static final指示类常量,const是java保留字但并未使用;
5.运算符
6.字符串
String类包含在java.lang包中,这个包会在Java启动的时候自动import,所以可以当做一个内置类(built-in class),不需要显式的使用import引入String类;
String类是唯一一个不需要new关键字来创建对象的类;
java没有内置的字符串类型,而是在标准java类库中提供预定义类String,即每个字符串都是String类的一个实例;
不能修改字符串中的字符;
不能使用==运算符检测两个字符串是否相等,只能确定是否在一个位置上,只有字符串常量是共享的,而+或substring等操作生成的并不是共享的;
检查空串: if(str.length == 0) 或 if (str.equals("")) , 检测nil串: if(str == null)
1 importjava.util.Arrays;2 classStringDemo3 {4 public static voidmain(String [] args)5 {6 String name1="hello world";7 String name2="hello world";8 String name3=new String("hello world");9 String name4=new String("hello world");10 System.out.println( name1==name2 );//true
11 System.out.println( name3==name4 );//false
12
13 System.out.println("字符串的查找----------------------------------------");14
15 System.out.println("字符串的使用!String");16 System.out.println(name1.length()+":字符串的长度");17 System.out.println(name1.charAt(3)+":返回指定下标的字符");18 System.out.println(name1.indexOf('o')+":通过字符找到字符的下标");19 System.out.println(name1.lastIndexOf('o')+":返回最后一个字符的下标");20
21
22 System.out.println("字符串的判断-----------------------------------");23
24 String s="";25 System.out.println(s.isEmpty());//true 长度为0返回true 否则返回false
26 String fileName="Demo1.java";27 System.out.println(fileName.endsWith(".java"));//判断某个是否已某个字符串结尾
28 System.out.println(fileName.contains("java"));//判断是否包含某个字符串
29 System.out.println(fileName.equals("java"));//false
30 System.out.println("java".equals("java"));//true
31 System.out.println("java".equalsIgnoreCase("JaVa"));//true忽略大小写比较
32
33
34 System.out.println("字符串转换---------------------------------------");35 String str=new String(new char[]{'a','b','c','d','e'});36 System.out.println(str);37
38 char[] charArr=str.toCharArray();//字符串装换成字符数组
39 System.out.println(Arrays.toString(charArr));40
41 String strBy=new String(new byte[]{97,98,99});42 System.out.println(strBy);43 byte [] byteArr=strBy.getBytes();44 System.out.println(Arrays.toString(byteArr));//字符串转换成byte数组
45
46 System.out.println("字符串替换---------------------------------------");47
48 String strRe="hello world !";49 System.out.println(strRe.replace("world","java"));//都会重新创建一个对象,原来的 对象不会改变
50
51 System.out.println("字符串切割---------------------------------------");52 String strSpl="hello world !";53 String[] strArraySpl=strSpl.split(" ");54 System.out.println(Arrays.toString(strArraySpl));55
56 System.out.println("字符串子串------------------按照指定顺序求字符串的一部分---------------------");57 String strSub="hello world !";58 System.out.println(strSub.substring(3));//也是产生新的字符串
59 System.out.println(strSub.substring(3,9));//假如超过了字符串的长度,那么用"空"表示60 //System.out.println(strSub.subString(6,4))//运行时报错可以大于等于前面一个下标
61
62 System.out.println("字符串大小转换---------------------------------------");63 String strUp="HELLO world";64 System.out.println(strUp.toUpperCase());65 System.out.println(strUp.toLowerCase());66
67 System.out.println("字符串去除两边空格---------------------------------------");68 String strTr=" hello world ! ";69 System.out.println(strTr.trim());70
71 //trim的实现 数组里面的length是属性不是方法
72 String strTrm=" hello world ! ";73 char[] charTr=strTrm.toCharArray();74 int start=0;75 int end=charTr.length;76 for(int i=0;i
80 break;81 }82 for(int i=charTr.length-1;i>=0;i--)83 {84 if(charTr[i]==' ')85 end--;86 else
87 break;88 }89 System.out.println(strTr.substring(start,end+1));90 }91
92 /*string 对象的创建: String name1="my";是放在内存常量区中93 方式1: string对象是放在常量池中的一块内存地址94 放置之前先检查该区域是否已经放有该常量,如果有,直接返回地址95
96 方式2:String name3=new String("my");97 这个是放在堆内存里面的,创建出来的对象是不相等的,因为内存地址不一样98
99
100 String特点:101 1、由于字符串底层是由一个字符数组来实现的,所以String是不可变的102 2、String 重写了Object的hashCode方法103 == 表示比较的是地址104
105 String 常用的方法:106
107
108 */
109 }
String demo
7.输入输出
数据流: http://blog.csdn.net/hguisu/article/details/7418161
读取输入:Scanner类 (java.util.Scanner)
1 public classTestScanner {2 public static voidmain(String[] args) {3 Scanner s = newScanner(System.in);4 System.out.println("请输入字符串:");5 while (true) {6 String line =s.nextLine();7 if (line.equals("exit")) break;8 System.out.println(">>>" +line);9 }10 }11 }
格式化输出:
文件输入与输出:
java.utiil.Scanner Scanner(File f) 构造一个从给定文件读取数据的Scanner;
Scanner(String data) 构造一个从给定字符串读取数据的Scanner;
java.io.PrintWriter PrintWriter(String filename) 构造一个将数据写入文件的PrintWriter,文件名由参数指定
8.控制流
快作用域: 一个块可以嵌套在另一个块中,但不能在嵌套的块中声明同名的变量;
public static voidmain(String[] args)
{intn;
{intk;int n; //ERROR, can't redefine n in inner block
}
}
条件语句:
循环语句:while , do.....while
确定循环:for 若在for内部定义一个变量,这个变量不能在循环体外使用
for(int i=1; i<=10;i++)
{
...
}//i no longer defined here
intifor(i=1;i<=10;i+=)
{
...
}//i is still defined here
多重选择: switch语句
中断控制流程语句: 带标签的break语句
9.大数值
java.math包提供了类: BigInteger 和 BigDecimal,实现任意精度的整型运算和浮点型运算
10.数组
创建数组时,所有元素都初始化为0,bool类型为false,对象数组的元素为null,表示还未存放任何元素;
for each循环: for(variable:collection) statement
数组拷贝:数组变量拷贝给另一个变量,此时两个变量将引用同一个数组;
命令行参数: java Message -h world ,则 args[0]= -h, args[1]= world;
多维数组: