java----基本数据类型和String类(7.6)_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > java----基本数据类型和String类(7.6)

java----基本数据类型和String类(7.6)

 2013/7/13 12:15:18  Mini_Xiao  程序员俱乐部  我要评论(0)
  • 摘要:第一节基本数据类型和String类纲要:1.八种基本数据类型2.数据类型之间的转换3.String类一.八种基本数据类型整数类型:十进制存储格式byte字节型8bits表示范围:-128~127short短整型16bits表示范围:-2^15~2^15-1int整型32bits表示范围:-2^31~2^31-1long长整型64bits表示范围:-2^63~2^63-1浮点型:十六进制存储格式,默认格式为doublefloat浮点型32bitsdouble双精度浮点型64bits布尔型
  • 标签:数据类型 Java 数据

class="p0" style="margin-top: 0pt; margin-bottom: 0pt;">第一节???基本数据类型和String

纲要:1.八种基本数据类型

??????2.数据类型之间的转换

??????3.String

?

一.八种基本数据类型

整数类型:十进制存储格式

?????byte????字节型????8bits?????表示范围:-128~127

?????short???短整型????16bits????表示范围:-2^15~2^15-1

?????int??????整型?????32bits????表示范围:-2^31~2^31-1

?????long????长整型????64bits????表示范围:-2^63~2^63-1

浮点型:十六进制存储格式,默认格式为double

?????float????浮点型????32bits???

?????double???双精度浮点型????64bits

布尔型:

?????boolean???布尔型????true/false

字符型:

??????char?????字符型????16bits?

?

(数据值域说明:

?????1.一个bit是计算机可以存储的最小数据单位。即1位,不是0就是1

?????2.1K=1024bit?,?1M=1024K?,?1G=1024M???

?

/**
 * 测试基本数据类型的取值范围
 * @author zhouxiaoxiao
 *
 */
public class range {

	/**
	 * 程序主函数入口
	 */
	public static void main(String[] args) {
      
		//byte 类型可取的最小值:-2^7
		System.out.println("byte 类型可取的最小值: "+Byte.MIN_VALUE);
		//byte 类型可取的最大值:2^7-1
		System.out.println("byte 类型可取的最大值: "+Byte.MAX_VALUE);
		
		//short 类型可取的最小值:-2^15
		System.out.println("short 类型可取的最小值: "+Short.MIN_VALUE);
		//short 类型可取的最大值:2^15-1
		System.out.println("short 类型可取的最大值: "+Short.MAX_VALUE);
		
		//int 类型可取的最小值:-2^31
		System.out.println("int 类型可取的最小值: "+Integer.MIN_VALUE);
		//int 类型可取的最大值:2^31-1
		System.out.println("int 类型可取的最大值: "+Integer.MAX_VALUE);
		
		//long 类型可取的最小值:-2^63
		System.out.println("long 类型可取的最小值: "+Long.MIN_VALUE);
		//long 类型可取的最大值:2^63-1
		System.out.println("long 类型可取的最大值: "+Long.MAX_VALUE);	
		
		//float 类型可取的最小正值:2^(-149)=1.4E-45
		System.out.println("float 类型可取的最小正非零值的常量: "+Float.MIN_VALUE);
		//float 类型可取的最大正值:(2-2^(-23))2^127=3.4028235E38
		System.out.println("float 类型可取的最大正有限值的常量: "+Float.MAX_VALUE);
		
		//double 类型可取的最小正非零值:2^(-1074)=4.9E-324
		System.out.println("double 类型可取的最小正非零值: "+Double.MIN_VALUE);
		//double 类型可取的最大正有限值: (2-2^(-52))*2^1023=1.7976931348623157E308
		System.out.println("double 类型可取的最大正有限值: "+Double.MAX_VALUE);
		
		//boolean 类型只可取两个值:true 或 false
		System.out.println("boolean 的true值: "+Boolean.TRUE);
		System.out.println("boolean 的false值: "+Boolean.FALSE);		
		
		//char 类型可取的最小值: '\u0000'即Unicode值为0000的字符‘ ’。
		System.out.println("char 类型可取的最小值: "+Character.MIN_VALUE);
		System.out.println("char 类型可取的最小值的Unicode值为: "+(int)Character.MIN_VALUE);
		//char 类型可取的最大值: '\uFFFF'即Unicode值为FFFF的字符‘?’。
		System.out.println("char 类型可取的最大值: "+Character.MAX_VALUE);	
		System.out.println("char 类型可取的最大值的Unicode值为: "+(int)Character.MAX_VALUE);
	}

}

?结果如下:



?

二.数据类型之间的转换

数据范围大小:byte<short<char<int<long<float<double

?1.boolean类型不能和其他任何类型进行相互转换。

2.小范围的类型转换成大范围的类型时,只有在整型转成char型时才需要强制转换,

??其他情况下都可以通过赋值的方式直接转型。

代码如下:

/**
 * 数据类型之间的转换,小范围转大范围
 * byte<short<char<int<long<float<double
 * @author zhouxiaoxiao
 * 
 */
public class minTRANSmax {

	/**
	 * 程序主函数入口
	 */
	public static void main(String[] args) {

		/**********boolean类型与其他类型之间的转换***********/
		//boolean类型既不能通过直接复制转为其他类型,也不能通过强制转化转为其他类型
		//boolean bool=true;
		//byte b0=bool; ×
        //byte b0=(byte)bool; ×
		
		/**********byte型转其他大范围的***********/
		byte b1=123;
		
		//byte型可直接通过赋值转short型,int型,long型,float型,double型
		//byte型转short型如下:
		short s1=b1;
		System.out.println("byte型值为:123,转换为short型后为:"+s1);
		
		//byte不能通过赋值直接转为char型
		//char c1=b1; ×
		//byte型经过强制转换转为char型
		char c1=(char)b1;
		System.out.println("byte型值为:123,强制转换为char型后为:"+c1);

		/********short型转其他大范围的*******/
		short s2=1234;
		
		//short不能通过赋值直接转为char型
		//char c1=b1; ×
		//short型经过强制转换转为char型
		char c2=(char)s2;
		System.out.println("short型值为:123,强制转换转为char型后的值为:"+c2);
		
		//short型可直接通过赋值转为int型,long型,float型,double型
		//short型转int型如下:
		int t2=s2;
		System.out.println("short型值为:123,转换为int型后的值为:"+t2);

		/**********char型转为其他大范围的*********/
		char c3='3';  //字符3的ASCII值为51
		
		//char型可直接通过赋值转为int型,long型,float型,double型
		//char型转int型如下:
		int t3=c3;
		System.out.println("char型字符为:3,转换为int型后的值为:"+t3);

		/********int型转其他大范围的*******/
		int t4=12345;
		
		//int型可直接通过赋值转为long型,float型,double型
		//int型转为long型如下:
		long lg4=t4;
		System.out.println("int型值为:12345,转换为long型后的值为:"+lg4);

		/********long型转其他大范围的*******/
		long lg5=123456;
		
		//long型可直接通过赋值转为float型,double型
		//long型转为float型如下:
		float f5=lg5;
		System.out.println("long型值为:123456,转换为float型后的值为:"+f5);

		/********float型转其他大范围的*******/
		 //浮点类型默认的格式为double型,因此不可以将12345.6直接赋值给float型
		//float f6=12345.6; ×
		float f6=(float)12345.6;  
		
		//float型可直接通过赋值转为double型
		double d6=f6;
		System.out.println("float型值为:12345.6,转换为double型后的值为:"+d6);			
	}

}

?结果如下:



?

3.大范围数据类型转换为小范围数据类型时

?(1)都需要用强制转换,强制转换的格式如下:

???????? 数据类型 类型名=(数据类型)数据;

?(2)大范围的数据类型转换为char型时若值未超过char型的最大范围,则会输出相应的字符,

?若已经超出了char的最大范围,则不输出任何结果。

?(3)浮点型转整数类型时,若没有超出整型的数据范围,则只会丢失小数点部分的数据。

?若超出了整数类型的数据范围,则从“头”开始到对应位置即可,但数据已经不正确了。

?例:对byte型,数据范围为-128~127,

??????? -129已经超出了范围,它在byte中对应的数为127,-130则对应值126......以此类推

????????? 128也超出了数据范围,它在byte中对应的数据为-128,129则对应值-127......以此类推。

?(4)整数数据类型之间的转换,若没有超出数据范围,则数据不产生影响。

?? 若超出了整数类型的数据范围,也会从“头”开始到对应位置即可,但数据也会不正确。

代码测试如下:

?

/**
 * 数据类型之间的装换,大范围转小范围
 * byte<short<char<int<long<float<double
 * @author zhouxiaoxiao
 * 
 */
public class maxTRANSmin {

	/**
	 * 程序主函数入口
	 */
	public static void main(String[] args) {

		/*******double型转成范围比它小的类型*********/
		double d1=123456.3456;

		//double型不能直接转为float型,必须通过强制转型
		//float f1=d1;   X
		float f1=(float)d1;   //float精度比double低,会有一些小数点丢失
		System.out.println("double型的数据值为:123456.3456,强制转为float型后的值:"+f1);
		
		//double转为整型时也必须用强制转型,若值未超过整型的最大范围,则只会丢失小数部分的值
		//long lg1=d1;  X
		long lg1=(long)d1;
		System.out.println("double型的数据值为:123456.3456,强制转为long型后的值:"+lg1);
		
		//double转为整型时,若超过了整数的最大范围,则从头开始数,输出对应的值
		//short s1=d1; X
		short s1=(short)d1;
		System.out.println("double型的数据值为:123456.3456,强制转为short型后的值:"+s1);
		
		//double转为char型时也必须用强制转型,若值未超过char型的最大范围,则会输出相应的字符
		//若已经超出了char的最大范围,则不输出任何结果
		//char c1=d1;  X
		char c1=(char)d1;    //d1已经超出了最大范围
		System.out.println("double型的数据值为:123456.3456,强制转为char型后的值:"+c1);
		
		//double型不能转为boolean型
		//boolean bool=d1;  X
                //boolean bool=(boolean)d1;  X
		
		/*******float转为范围比它小的类型*********/
		float f2=(float)1234.5;
		
		//float转为整型时也必须用强制转型,若值未超过整型的最大范围,则只会丢失小数部分的值
		//long lg2=f2;  X
		long lg2=(long)f2;
		System.out.println("float型的数据值为:1234.5,强制转为long型后的值:"+lg2);
		
		//float转为整型时,若超过了整数的最大范围,则从头开始数,输出对应的值
		//byte b2=f2;  X
		byte b2=(byte)f2;   
		System.out.println("float型的数据值为:1234.5,强制转为byte型后的值:"+b2);
		
		//double转为char型时也必须用强制转型,若值未超过char型的最大范围,则会输出相应的字符
		//若已经超出了char的最大范围,则不输出任何结果
		//char c2=f2;  X
		char c2=(char)f2;   //f2没有超出最大范围
		System.out.println("float型的数据值为:1234.5,强制转为char型后的值:"+c2);
		
		//double型不能转为boolean型
		//boolean bool=f2;  X
                //boolean bool=(boolean)f2; X
		
		/*******long转为范围比它小的类型********/
		long lg3=1234;
		
		//long型转成范围比它小的整型时必须用强制转换,若没有超过最大值,则数据不影响
		//int t3=lg3;  X
		int t3=(int)lg3;
		System.out.println("long型的数据值为:1234,强制转为int型后的值:"+t3);
		
		//long型转为范围比它小的整型时,若超过了整数的最大范围,则从头开始数,输出对应的值
		//byte b3=lg3;  X
		byte b3=(byte)lg3;
		System.out.println("long型的数据值为:1234,强制转为byte型后的值:"+b3);
		
		//long转为char型时也必须用强制转型,若值未超过char型的最大范围,则会输出相应的字符
		//若已经超出了char的最大范围,则不输出任何结果
		//char c3=lg3;  X
		char c3=(char)lg3;
		System.out.println("long型的数据值为:1234,强制转为char型后的值:"+c3);
		
		//long型不能转为boolean型
		//boolean bool=lg3;  X
                //boolean bool=(boolean)lg3; X
		
		/*******int转为范围比它小的类型********/
		int t4=123;
		
		//int型转成范围比它小的整型时必须用强制转换,若没有超过最大值,则数据不影响
		//若超过了整数的最大范围,则从头开始数,输出对应的值
		//byte b4=t4;  X
		byte b4=(byte)t4;   //123没有超出byte型的最大范围
		System.out.println("int型的数据值为:123,强制转为byte型后的值:"+b4);
		
		//int转为char型时也必须用强制转型,若值未超过char型的最大范围,则会输出相应的字符
		//若已经超出了char的最大范围,则不输出任何结果
		//char c4=lg3; X
		char c4=(char)t4;
		System.out.println("int型的数据值为:123,强制转为char型后的值:"+c4);
		
		//int型不能转为boolean型
		//boolean bool=t4; X
               //boolean bool=(boolean)t4;  X
		
		/*******char转为范围比它小的类型********/
                char c5='A';
                System.out.println(c5);
        
              //char型转整型时,若ASCII的值未超过整型的最大范围,则整型值直接为字符的ASCII值
                //若超过了,则从头开始数,输出对应的值
                //short s5=c5;   X
               short s5=(short)c5;
              System.out.println("char型的字符为:A,强制转为short型后的值:"+s5);
        
		//byte b5=c5;  X
		byte b5=(byte)c5;
		System.out.println("char型的字符为:A,强制转为byte型后的值:"+b5);
		
		//char型不能转为boolean型
		//boolean bool=c5;  X
               //boolean bool=(boolean)c5;   X
		
		/************short型转byte型*************/
		short s6=123;
		
		//byte b5=s6;  X
		byte b6=(byte)s6;
		System.out.println("short型的数据值为:123,强制转为byte型后的值:"+b6);
		
		//short型不能转为boolean型
		//boolean bool=s6;   X
               //boolean bool=(boolean)s6;   X
	}
}
 

?结果如下:



?

三.String类:Stringjava中是类,String类表示的是字符串。

?????? String?类提供处理?Unicode?代码点(即字符)和?Unicode?代码单元(即?char?值)的方法。

1.创建并出示化字符串的方法:

???? (1)使用字符串常量直接初始化

?????(2)使用构造方法创建并初始化

/**
 * 创建并初始化string对象
 * @author zhouxiaoxiao
 *
 */
public class st {

	/**
	 * 程序主函数入口
	 */
	public static void main(String[] args) {

		//方法一:使用字符串常量直接初始化
		String s1="dcddjcidjm";
		System.out.println("字符串常量直接初始化s1 :"+s1);
		//输出结果:字符串常量直接初始化s1 :dcddjcidjm
		
		//方法二:使用构造方法创建,然后再赋值
		String s2=new String();
		s2="jkdnvk";
		System.out.println("构造方法创建,然后再赋值s2 :"+s2);
		//输出结果:构造方法创建,然后再赋值s2 :jkdnvk
		
		//方法三:使用构造方法创建的同时初始化
		char [] ch={'a','p','p','l','e'};
		String s3=new String(ch);
		System.out.println("构造方法创建同时初始化s3 :"+s3);
		//输出结果:构造方法创建同时初始化s3 :apple
	}

}

?

2.String类中常用的方法:

? 2.1获取指定索引处字符,Unicode 代码点(Unicode值)及Unicode 代码点数的方法

??????? public char charAt(int index);

??????? public int codePointAt(int index);

??????? public int codePointBefore(int index);

??????? public int codePointCount(int beginIndex,int endIndex);

? 方法实现的代码及说明如下:

/**
 * 指定索引处字符的方法
 * @author zhouxiaoxiao
 *
 */
public class st {

	/**
	 * 程序主函数入口
	 */
	public static void main(String[] args) {

		//初始化字符串
		String s1="djdvdejkrkrhttmdd";

		/***String类中的有关指定索引处字符的有关方法*****/
		//返回指定索引处的char值
		char c1=s1.charAt(3);    //3表示索引值,索引值范围为:0~length-1
		System.out.println("字符串  "+s1+"在索引值为3位置的字符为:"+c1); 
		
		// 返回指定索引处的字符(Unicode 代码点)。
		int t1=s1.codePointAt(3);   //在索引值为3的字符为v,它对应的Unicode值为118
		System.out.println("t1="+t1); //输出结果为:t1=118
		
		//返回指定索引之前的字符(Unicode 代码点)。
		int t2=s1.codePointBefore(3);  //在索引值为3之前的字符为d,它对应的Unicode值为100
		System.out.println("t2:"+t2);   //输出结果为:t2=118
		
		//返回此 String 的指定文本范围中的 Unicode 代码点数。
		//文本范围为:beginIndex~endIndex-1
		int t3=s1.codePointCount(3, 5);  //3是开始的索引值,5是结束的索引值,则取定的范围只包含了3,4
		System.out.println("t3:"+t3);	//输出的结果为:t3=2
	}

}

?

?? 2.2比较两个字符串的方法:

??????? public int compareTo(String anotherString);

??????? public int compareToIgnoreCase(String str);

??????? public boolean equals(Object anObject);

??????? public boolean equalsIgnoreCase(String anotherString);

????? 方法的实现及说明如下代码:

/**
 * 比较两个字符串的方法
 * @author zhouxiaoxiao
 *
 */
public class st {

	/**
	 * 程序主函数入口
	 */
	public static void main(String[] args) {

		//初始化字符串
		String s1="dejkriivjri";
		String s2=new String("Dabcdjdhjhvd  ");
		String s3=new String("dejkr");
		String s4="DEJKRIIVJRI";

		//按字典顺序比较两个字符串
		int t4=s1.compareTo(s2);    //字符串之间不存在包含关系时,判断第一个不同的字符之间Unicode差值
		System.out.println("t4:"+t4);   //d的Unicode值为:100,D的为:68.  100-68=32, t4=32
		t4=s1.compareTo(s3);    //一个字符串是另一个字符串的前部分或整个部分时,为两个字符串的长度之差
		System.out.println("t4:"+t4);   //s3是s1的前面部分,两者长度相差6,所以t4=6
		 
		//按字典顺序比较两个字符串,不考虑大小写。
		int t5=s1.compareToIgnoreCase(s4);
		System.out.println("t5:"+t5);  //不考虑大小写,s1和s4相同,长度相差0,所以t5=0
		
		//将此字符串与指定的对象比较,考虑大小写。
		boolean bool5=s1.equals(s2);   //字符串相同则返回true不同则返回false
		System.out.println("bool5:"+bool5);  //结果为:true
		
		//将此 String 与另一个 String 比较,不考虑大小写。
		boolean bool6=s1.equalsIgnoreCase(s4);  //字符串相同(不区分大小写)则返回true不同则返回false
		System.out.println("bool6:"+bool6);   //结果为:false
	}
}

?

  • 大小: 27.2 KB
  • 大小: 14.3 KB
  • 大小: 30.4 KB
  • 查看图片附件
发表评论
用户名: 匿名