java核心技术 要点笔记1

第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 class FirstSample
2 {
3     public static vod 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 import java.util.Arrays;
  2 class  StringDemo
  3 {
  4     public static void main(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<charTr.length;i++){
 77             if(charTr[i]==' ')
 78                 start++;
 79             else
 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 class TestScanner { 
 2         public static void main(String[] args) { 
 3                 Scanner s = new Scanner(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 void main(String[] args)
{
    int n;
    {
        int k;
        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


int i
for(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;

多维数组:

 

posted @ 2015-11-04 17:16  zxqstrong  阅读(531)  评论(0编辑  收藏  举报