zoukankan      html  css  js  c++  java
  • java核心技术第3章

    第三章:

    main方法必须是public的

    有八种基本类型:

    Java整形:

    类型 存储需求 取值范围
    int  4字节 -2147483648~2147483647(正好超过20亿)
    short 2字节 -32768~32767
    long 8字节 -9223372036854775808~9223372036854775807
    byte 1字节 -128~127

     

     

     

     

    java整形取值范围与机器

    长整形以L结尾,十六进制以0x为前缀,八进制以0为前缀,java7以后,以0b为前缀的数是二进制数

    java中无无符号类型unsigned

     

    Java浮点型:

    类型 存储需求 取值范围
    float  4字节  大约±3.40282347E+38F(有效位数6~7位)
    double  8字节 大约 ±1.79769313486231570E+308(有效位数为15位)

     

     

     

    double表示这种类型的数值精度是float的两倍。绝大多数应用使用double

    float类型数后有后缀F(3.14F),无后缀或后缀为D表示double类型。

     

    char类型:

    char类型用于表示单个字符,通常用于表示字符常量。例如:'A'是编码为65所对应的字符常量。

    在Unicode标准中,代码点采用16进制书写,并加上前缀U+。例:U+0041表示字母A的代码点。

    Unicode代码点分为17个代码级别。第一个代码级别称为基本的多语言级别,代码点从U+0000到U+FFFF,其余的16个附加级别,代码点从U+10000到U+10FFF,其中包括一些辅助字符。

    Java使用UTF-16。在基本的多语言级别中,每个字符用16位表示,通常称为代码单元。而辅助字符采用一对连续的代码单元进行编码。这样构成的编码值一定落入基本的多语言级别中空闲的2048个字节内,通常被称为替代区域。使用这种方法可以迅速的知道是一个字符的编码,还是一个辅助字符的第一或第二部分。

     

    boolean类型:

    boolean类型有两个值:false和true。整型值和布尔值之间不能进行互相转换。

     

    变量:

    声明一个变量后,必须用赋值语句对变量进行显示初始化,千万不要使用未被初始化的变量。

     

    常量:

    在Java中,利用关键字final指示常量。

    关键字final表示这个变量只能被赋值一次,一旦被赋值后就不能再更改了。习惯上,常量名使用大写。

     

    运算符:


    虚拟机设计者允许将中间计算结果采用扩展精度。但是,对于使用strictfp关键字标记的方法必须使用严格的浮点计算来产生理想的计算结果。例如:

    public static strictfp void main(String[] args)

     

    位运算符:

    对移位运算符右侧的参数需要进行模32的运算(除非左边的操作数是long类型,此时需要进行模64的运算)。例如:1<<35与1<<3或8是相同的。

     

    数值类型之间的转换:

                             char

                               |

    byte——short——int——long

     

    float——double

    以上转换无精度损失

    其他几种转换:

    int或long转float,可能有精度损失

    int转double无精度损失

    long转double可能存在精度损失

     

    以上转换可以自动进行

     

    强制类型转换:

    必要时int可以自动转换为double,若double需要转换为int需要通过强制类型转换(cast)实现这个操作。可能会丢失一些信息。

    例:double x = 90997  ;           int nx = (int) x ;

    如果想对浮点数进行舍入运算,需要使用Math.round方法

    double x = 9.997 ;

    int nx = (int)Math.round(x) ;

    由于Math.round()返回的是long类型,long类型转换为int需要强制转换。

     

    强制转换,若超出范围则会截断:

    例:(byte)300的实际值是44.

     

     字符串:

    String类没有提供修改字符串的方法。

    String greeting = "hello" ;

    将greeting修改为"Help!" 

    greeting = greeting.substring(0, 3) + "p!" ;

     

    检测字符串是否相等:

    s.equals(t)

    如果s与t相等返回true,否则返回false。

    s,t可以为字符串变量,也可以为字符串常量。如:"Help!".equals(greeting)

    不区分大小写使用:equalsIgnoreCase。

    equals用于检测两个字符串内容是否相同,==用于判断两个字符串是否放在同一位置,若放在同一位置返回true。

     

    输入:

    Scanner in = new Scanner(System.in) ;

    读取一行 : String  name = in.nextline() ;

    读取一个单词: String firstName = in.next() ;

    读取一个整数:int age = in.nextInt() ;

     

    Java6 :读取密码

    Console cons = System.console() ;

    String username = cons.readline("User name:") ;

    char[] passwd = cons.readPasswd("Passwd") ;

     

    格式化输出:

    System.out.printf("%8.2f",x)  8个字符宽度,小数点后2位小数。位数不足,左边补空格。

     

    块作用域:

    不能再嵌套的两个块中声明同名的变量。类的域变量可以和方法块中的变量重名。

     

    大数值:

    如果基本的整数和浮点数精度不能够满足要求,那么可以使用java.math包中的两个很有用的类:BigInteger和BigDecimal。这两个类可以处理包含任意长度数字序列的数值。

    使用静态方法valueof实现转换:

    BigInteger a = BigInteger.valueof(100) ;

    不能使用常用的算术运算符进行大数值的运算。而是需要使用大数值中提供的方法:

    BigInteger c = a.add(b) ;

    BigIteger d = c.mutiply(b.add(BigInteger.valueof(2))) ;

    除法为:divide

    取模为:mod

    这几种方法返回的都是BigInteger类型。

     

    数组:


    声明数组:

    int[] a ;

    int a[] ;

    Java 习惯于第一种

    int[] a = new int[100] ;

    创建一个数字数组时,所有的元素都初始化为0。boolean数组的元素会初始化为false。对象数组的元素则初始化为一个特殊值null。

    String[] names = new String[10] ;

     

    for each循环:

    for each循环使用比较方便。

    for(variable : collection) statement

    例:

    for(int element : a) 

      System.out.println(element) ;

     

    更简洁的打印数组元素方法:

    System.out.println(Arrays.toString(a)) ;

     

    数组初始化及匿名数组:

    int[] smallPimes = {2, 3, 5, 7, 11, 13} ;

    初始化匿名数组:

    new int[]{17, 19, 23, 29, 31, 37}

    数组大小就是初始值的大小

    smallPrimes = new int[]{17, 19, 23, 29, 31, 37} ;

    等同于:

    int[] anonymous = {17, 19, 23, 29, 31, 37} ;

    smallPrimes = anonymous ;

     

    数组拷贝:

    在Java中,允许将一个数组变量拷贝给另一个数组变量。这时,两个变量将引用同一个数组:

    int[] luckyNumbers = smallPrimes;

    luckyNumbers[5] = 12 ;

     

    讲一个数组所有值拷贝到一个新的数组中去:

    int[] copiedLuckyNumbers = Arrays.copyof(luckyNumbers, luckyNumbers.length) ;第二个参数是新数组的长度。这个方法通常用来增加数组的大小:

      luckyNumbers = Arrays.copyof(luckyNumbers, 2*luckyNumbers.length) ;

    如果数组元素是数值型,多余的元素将被赋值为0.如果为布尔型,将会赋值为false。如果长度小于原始数组长度,则只拷贝最前面的数组元素。

     

    数组排序:

     int[] a = int[1000] ;

    Arrays.sort(a) ;

     

     多维数组:

    for each不能自动处理二维数组的每一个元素。要想访问二维数组a的所有元素,需要使用两个嵌套的循环。

     

    Java实际上没有多维数组,只有一维数组。多维数组被解释为”数组的数组。“

    例:

    int[][] odds = new int[MAX+1][] ;

    for(int n = 0 ; n <= MAX; n++) 

      odds[n] = new int[n+1] ;

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    JNI中java类型的简写
    JNI 资源释放
    【翻译自mos文章】当指定asm disk 为FRA时,11.2.0.3的dbua hang住
    Codeforces 85D Sum of Medians(线段树)
    Win8.1应用开发之异步编程
    VC++的内联汇编
    WPF实现界面动态布局
    找唯一不出现三次而出现1次的数子O(n)位运算算法
    模块管理常规功能自己定义系统的设计与实现(31--第三阶段 权限设计[1])
    Codeforces Round #FF (Div. 2):C. DZY Loves Sequences
  • 原文地址:https://www.cnblogs.com/chwy/p/5639005.html
Copyright © 2011-2022 走看看