找回密码
 注册
搜索
热搜: java php web
查看: 337|回复: 1

[笔记]java学习笔记1--java优势

[复制链接]
发表于 2009-1-26 11:54:59 | 显示全部楼层 |阅读模式
[笔记]java学习笔记1--java优势
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(条件)           //至少执行一次
好好学习,天天向上
发表于 2009-1-26 12:40:50 | 显示全部楼层
mark 5
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|软晨网(RuanChen.com)

GMT+8, 2024-11-13 10:31

Powered by Discuz! X3.5

Copyright © 2001-2023 Tencent Cloud.

快速回复 返回顶部 返回列表