码迷,mamicode.com
首页 > 编程语言 > 详细

java核心技术第3章

时间:2016-07-03 23:06:50      阅读:255      评论:0      收藏:0      [点我收藏+]

标签:

第三章:

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] ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

java核心技术第3章

标签:

原文地址:http://www.cnblogs.com/chwy/p/5639005.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!