Vince's Tech Blog

hit counter

Core Java Day01

先把以前的笔记整理后发上来,剩下的尽快补齐。

1 java优势:跨平台性

  虚拟机:java运行时系统,就是一个字节码解释器,虚拟机将字节码解释成机器码给cpu执行.
         在java中我们用虚拟机来屏蔽底层操作系统的差异.

  编译:生成可执行文件像a.out,a.exe 效率高,但不跨平台
  解释:解释器把源文件逐行解释,跨平台但效率不高

  在java中:先编译后解释
  把.java文件编译成.class字节码文件.(平台中立的) 比重新解释快一点.
  由虚拟机解释执行.class字节码文件

  jre=虚拟机+编译器
  jdk=虚拟机+编译器+类库  //jdk又称java开发工具包

 

2 第一个程序:
  public class Test{
    public static void main(String [] args){
        System.out.println(“hello world”);
    }
  }

  任何代码都要封装在类里.
  一个文件里只能有一个公开类,文件名要和公开类类名一致.如上例文件只能叫Test.java
  一个源文件里可以有多个类,一个类生成一个.class文件,.class文件和类对应.
  编译:javac + 文件名
  运行:java + 类名
  print 打印一行
  println:打印一行换行

 

3 环境变量:

  JAVA_HOME:/opt/1.5.06  指向jdk安装目录. 给别的软件用的.
  PATH:$JAVA_HOME/bin  一些jdk命令放在bin目录下比如java  javac命令
  CLASS_PATH:.      类路径,告诉虚拟机去哪找类, 点表示当前路径

 

4 包:把不同的源文件放在不同目录下.
  关键字:package   //一个源文件只能有一个package语句.
  加了包结构的类编译时javac –d . Test.java会自动生成目录结构,点表当前目录,前后都有空格.
  运行时要写全限定名: 包名.类名  java  p1.HelloWorld
  运行时要在包的上一级目录 

 

5 import:是一个声明 后面遇到类名可以不写包名.
  import p6.p7.*;表示以后用p6包下的p7子包下的所有类不用在写包结构了.
  import只能表示类,不能表示子包

  java.lang.* 这个包下的类是默认引入的.
  一个类里可以有0个或多个import,跟c++里的include不一样

 

6 注释

  //单行注释 到本行结束的所有字符会被编译器忽略.
  /* */  多行注释  在/* */之间的所有字符会被编译器忽略.
  /** */  文档注释 java特有的, 在/** */之间的所有字符会被编译器忽略.
  javadoc 工具,把java源程序中这种注释抽取出来形成html页面.
  javadoc –d doc Tarena.java

 

7 标识符命名规则:包括包名,类名,属性名,方法名等等
  (1) 由字母,数字,下划线,$组成,不能以数字开头.
  (2) 大小写敏感.
  (3) 不得使用java中的关键字和保留字.

  关键字:都是小写的 jdk1.4多了 assert关键字  jdk1.5多了enum 关键字
  保留字:goto 和const
  字面值:true 和false 是boolean类型字面值

  习惯:

  (1) 标识符要符合语义信息.
  (2) 包名所有字母小写
  (3) 类名每个单词首字母大写,其它小写 //TarenaStudent
  (4) 变量和方法: 第一个单词小写,从第二个单词开始首字母大写 //tarenaStudent
  (5) 常量: 所有字母大写

 

8 局部变量:定义在方法里的变量.
  (1)必须要先赋值,后使用.用之前要初始化,否则通不过编译.
  (2)作用范围:定义开始到定义它的代码块结束.
  (3)重合范围内,不允许2个局部变量命名冲突.

 

9 java中的数据类型:基本数据类型和对象类型
  基本类型:8种 与整型有关的前4种
  (1) byte     1B    -128-127
  (2) short    2B    -32768-32767
  (3) int      4B    -2147483648-2147483647
  (4) long     8B    加后缀L 赋给long类型变量
  (5) float    4B    加后缀f
  (6) double   8B    加后缀d 或不跟
  (7) boolean  1B    字面值 true 和false  //整数和boolean值不能相互转换了.
  (8) char     2B    采用unicode编码方式.全球统一的字符集. // char c='达'; 可以保存汉字

  任何国家编码方式都兼容ASCII编码, 编码方式和解码方式不同才会出现乱码.
  char类型的三种字面值.
  char c='a';
  char c= 97;
  char c='\u0061';     //unicode 码值是用16进制表示的,一个字节可以用2个16进制表示

  byte a=1;
  byte b=2;
  byte c=a+b;          //编译出错自动类型提升成int

  自动类型提升,把高字节转成低字节,需要作强制类型转换. byte c=(byte)a+b;

  类型自动提升规则:
  a和b作某种运算
  a和b中有double,结果就是double
  a和b中有float,结果就是float
  a和b中有long,结果就是long
  除此之外,结果都是int

  对象类型: String
  java中一个字符串是一个对象.这个对象有字面值,java中内置重载了+号,表示字符串的连接
  String s=”abcd”        //双引号引起来
  "1"+2+3   结果 "123"
  1+2+"3"   结果 "33"

  int x=1;
  int y=2;
  System.out.println(x+"+"+y+"="+(x+y));

 

10 运算符:
  byte a=20;
  a+=10;       //自加没有自动类型提升问题
  a=a+10; 

  >>   有符号右移,补符号位
  >>>  右移后高位都补0;

  a1=1000;
  System.out.println(a1>>1);       a1=500
  System.out.println(a1>>1);       a1=500
  a2= -1000;
  System.out.println(a2>>1);       a2= -500;
  System.out.println(a2>>1);       a2=214553;

  5/2=2           //整数除整数是整数
  5.0/2=2.5

 

11 程序流程控制:
  if else: 和c++的区别就在条件语句if(true)
  switch(byte short int char)      //必须是整形兼容的

  循环:
  for(int i=0;i<=10;i++){语句块}   //知道循环次数时使用
  while (条件){语句块}             //不知道循环次数时使用 
  do{语句块} while(条件)           //至少执行一次

posted on 2007-08-20 20:10 Vince Fu 阅读(224) 评论(1)  编辑  收藏 所属分类: Core Java笔记

评论

# re: Core Java Day01 2007-09-03 15:08 VAN

看不懂  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 

导航

<2007年9月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

统计

常用链接

留言簿(2)

随笔分类(1)

随笔档案(1)

搜索

最新评论