⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 05. core java note.txt

📁 在达内培训java笔记
💻 TXT
📖 第 1 页 / 共 5 页
字号:
sun考试:  SCJP:只考core java   SCJD:+jdbc+swing   
         SCWCD:+servlet+jsp(JAVA EE)   SCEA:+EJB+Webserver(架构师) 

必须养成优秀程序员的编写习惯:缩进(用空格)、注释、命名约定。
大小写敏感。
单独的“;”代表一条空语句。
main函数是我们整个程序的执行入口所以必须是静态公开的。
       必须写成这样:  public static void main(String[]args){...}

生成jar包:
    在eclipse里,选中要打包的几个文件,右键-Export-写文件名-Next-Next-选main方法的class-finish
    在jar包的同一文件夹下,新建一个空文档,写“java -jar ./文件名.jar”,再把这文档改成“文件名.sh”
    把这sh的属性-权限 改成“允许以程序执行文件”。以后双击这个sh即可运行

文本注释 Comments:
    注释必须写上,以便其他人阅读、引用和维护。
    单行注释  //...
    多行注释  /* ....*/
    文档注释  /** ... */ 
    文档注释,可以使用JDK的javadoc工具从原文件中抽取这种注释形成程序的帮助文档。
    使用javadoc命令建立HTML格式的程序文档:
     javadoc[options][packagenames][sourcefiles][@files]

标示符:
    用来给一个类、变量或方法命名的符号
  标示符命名规则:
    1. 以字母,“_”和“$”开头。可以包含字母、数字、“_”和“$”。
    2. 大小写敏感
    3. 不能与保留关键字冲突
    4. 没有长度限制(暗示使用长的标示符,以便阅读。长名字可使用工具输入) 
    5. 建议使用JavaBeans规则命名,并根据方法的目的,以 set、get、is、add 或 remove 开头。
  标示符命名约定:
    1. 类名、接口名:每个单词的首字母应该大写,尤其第一个单词的首字母应该大写。(驼峰规则)
        class  MyFirstClass
        interface  Weapon
    2. 字段、方法以及对象:第一个单词首字母应小写,其他单词首字母大写。(以便跟上面的有所区别)
        boolean isWoman
        void setName(String name)
    3. 常量:全部用大写字母表示。如果由几个单词组成,则由下画线连接。
        public final int  GREEN    
        public final int  HEAD_ COUNT
    4. Java包(Package):全部用小写字母。
        package  java.awt.event


java.lang.System.gc();  /  java.lang.Runtime.gc(); 
    垃圾回收的建议语句,只能建议而不能强制回收
    注意: System.gc(); 是静态方法,可直接调用。
          java.lang.Runtime.gc(); 不是静态方法,不能直接在main方法里调用

package 包
    目的:命名冲突,便于管理类
    运行时,先找到包所在目录,再执行“ 包名.类名”
import 导入。导入包内的类
    定义包之后,执行时:javac  -d 包的路径  类名.java
                    java  包名.类名
    import java.util.*; //表示导入java.util里面的所有类;但 import java.*; 则什么类都导不进
    用“*”表示导入当前包的类,不包括子包的类(可把包看作目录)。

声明规则
    * 一个源代码文件最多只能有一个公共(public)类。
    * 如果源文件包含公共类,则该文件名称应该与公共类名称相同。
    * 一个文件只能有一个包语句,但是,可以有多个导入语句。
    * 包语句(如果有的话)必须位于源文件的第一行。
    * 导入语句(如果有的话)必须位于包之后,并且在类声明之前。
    * 如果没有包语句,则导入语句必须是源文件最前面的语句。
    * 包和导入语句应用于该文件中的所有类。
    * 一个文件能够拥有多个非公共类。
    * 没有公共类的文件没有任何命名限制。

输入:使用Scanner 获取输入
    在J2SE 5.0中,可以使用java.util.Scanner类别取得使用者的输入
    可以使用这个工具的 next() 功能,来获取用户的输入
       Scanner s = new Scanner(System.in);
     System.out.printf("您输入了字符:  %s \n",  s.next());
     System.out.printf("您输入了数字: %d \n",  s.nextInt());
输入:使用 BufferedReader 取得输入//5.0之前的读取键盘的方法
    BufferedReader建构时接受java.io.Reader物件
    可使用java.io.InputStreamReader
    例: import java.io.InputStreamReader;
        import java.io.BufferedReader;
      class n{
    public static void main(String[] args){
       System.out.println("请输入一列文字,包括空格:");
       BufferedReader s = new BufferedReader(new InputStreamReader(System.in));
       String next;
       try{next = s.readLine();//此语句会抛异常,需处理
          System.out.println("您输入了文字:" + next);
       }catch(Exception e){}
        }}

数值保存方式:
    正数=  二进制
    负数=  补码
    补码=  反码 +1     正数=负数的补码(反码+1) 
    反码=  非(二进制数)

八进制数,零开头        011(八进制)=9(十进制)
十六进制数,零x开头    0x55(十六进制)=5*16+5(十进制) 

类型:数据都必须有类型
    boolean (8bit,不定的)只有true和false两个值
    char    16bit,   0~2^16-1     (2^16=6万6)
    byte    8bit,   -2^7~2^7-1    (2^7=128; 注意:两个 byte 数相加,变 int 型) 
    short   16bit,  -2^15~2^15-1  (2^15=32768)
    int     32bit,  -2^31~2^31-1  (2147483648,20亿,10位有效数字) 
    long    64bit,  -2^63~2^63-1  (900亿亿,20位有效数字) 
    float   32bit,  9位有效数字,含小数(四舍五入)(小数点算一位,正负号不算) 
    double  64bit,  18位有效数字
             注:float 和 double 的小数部分不可能精确,只能近似。
                比较小数时,用 double i=0.01; if ( i - 0.01 < 1E-6) ...
                不能直接 if (i==0.01)...

默认,整数是int类型,小数是double类型
long类型值,需跟L或l在数据后;float类型要跟f或F;或强制类型转换
科学计数法:12.5E3

    类型转换默认序列:
    byte  >  short   > int  >  long   >  float  >  double
                   char 」
    注意:默认类型转换(自动类型提升)会丢失精度,但只有三种情况:
    int>float; long>float; long>double.   看一下他们的有效位就明白。
    二进制是无法精确的表示 0.1 的。
    进行高精度运算可以用java.math包中BigDecimal类中的方法。
    自动类型提升又称作隐式类型转换。

    强制类型转换:int ti;  (byte) ti ;
    强制转换,丢弃高位

    宣告变量名称的同时,加上“final”关键词来限定,这个变量一但指定了值,就不可以再改变它的值
    如:final int n1= 10;   n1=20;  这就会报错


输出命令:
   System.out.println()  会自动换行的打印
   System.out.print()    直接打印,不会自动换行
   System.out.printf()   可插入带 % 的输入类型,前两种只可以插入转义符, 不能插入 % 的数据或字符串
   在 printf 里面,输出有5个部分  %[argument_index$][flags][width][.precision]conversion
         以“%”开头,[第几个数值$][flags][宽度][.精确度][格式]
   printf()的引入是为了照顾c语言程序员的感情需要
         格式化输出 Formatter;格式化输入 Scanner;正则表达式

输出格式控制:
   转义符:
   \ddd     1到3位8进制数指定Unicode字符输出(ddd)
   \uxxxx   1到4位16进制数指定Unicode字符输出(xxxx)
   \\       \ 
   \'       ' 
   \"       "  
   \b       退格(光标向左走一格)
   \f       走纸转页,换页
   \n       换行
   \r       光标回到行首,不换行
   \t       跳格

   %%       %  
   %d       输出10进位整数,只能输出Byte、Short、 Integer、Long、或BigInteger类型。(输出其他类型会抛异常) 
   %f       以10进位输出浮点数,提供的数必须是Float、Double或 BigDecimal (输出Integer类型也抛异常) 
   %e,%E    以10进位输出浮点数,并使用科学记号,提供的数必须是Float、 Double或BigDecimal
   %a,%A    用科学记号输出浮点数,以16进位输出整数部份,以10进位输出指数部份,数据类型要求同上。
   %o       (字母o)以8进位整数方式输出,限数据类型:Byte,Short,Integer,Long或BigInteger
   %x,%X    将浮点数以16进位方式输出,数据类型要求同上
   %s,%S    将字符串格式化输出(可输出任何类型)  
   %c,%C    以字符方式输出,提供的数必须是Byte、Short、Character或 Integer
   %b,%B    输出"true"或"false"(%B输出"TRUE"或"FALSE");另外,非空值输出true,空值输出 false
   %t,%T    输出日期/时间的前置,详请看在线API文件 

/********找出各字符的Unicode值*******************/
class Test{
    public static void main(String[] args) {
        String s= ""+0+'a'; //0=48,9=57
              //A=65,Z=90;a=97,z=122;空格=32
        int i = s.codePointAt(0);
        int j = s.codePointAt(1);
            //利用这codePointAt(int index)方法
        System.out.printf("%d %d",i,j);
}}
/**********************************************/
       
字符串的拼接:
    字符串+数值=字符串
    数值+字符串=字符串
    如:str+10+20  ==str1020   而 10+20+str  ==30str
    "+" 和 "+=" 都被重载了,具有合并字符串的能力,相当于 String 类里的 concat();

运算:
    算术运算:   加( +)   减(-)    乘( * )     除( / )     取余( % )
        % 取余运算: 2%3=2     100%3=1 
    赋值运算符:
      =     +=    -=    *=     /=     %=   
      (先运行完右边的,再跟左边的进行赋值运算;如 int i=10;i-=3*5;结果-5) 
      <<=     >>=    
    比较、条件运算:
        大于>   不小于>=    小于<   不大于<=    等于==    不等于 !=
    逻辑运算:
        短路运算(且 &&    或 ||  )      非短路运算(&   |  )      反相 ! 
        短路运算:当前面一个表达式可以决定结果时,后面的语句不用再判断。非短路运算时,还照样判断后面的
    位运算:
      &(AND)    |(OR)    ^(XOR异或)       ~(补码)按位取反 = 加1再取反(全 1 的补码是-1)
    移位运算:
     >>   <<    >>>     
     
     >>右移:全部向右移动,移到右段的低位被舍弃,最高位则移入原来最高位的值。右移一位相当于除2取商。
     >>>同上,只是最高位移入0(不带符号)。因为最高位是符号位,所以负数跟 >> 有区别,正数没区别。
     12>>>33  为12>>(33%32) = 12>>1  =6;因为int 型只有32位,认为全移走后就没意义
     1 <<32 为1
    instanceof():用户判断某一个对象是否属于某一个类的实例。
    “==”双等于号,比较数值是否相等。还可以用于比较两个引用,看他们引用的地址是否相等。
    在 Object 类里 equals() 跟“==”功能一样;但可以重载定义一个比较两者意义是否相等的方法。
    在java里可以把赋值语句连在一起写,如: x=y=z=5;   这样就x,y,z都得到同样的数值 5


两个数相运算时,默认是 int 类型
如果有更高级的,就按高级的那个类型
   if(其中一个是double型)double型;
   else if(其中一个是float型)float型;
   else if(其中一个是long型)long型;
   else int 型。

选择:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -