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

第一节   基本数据类型和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
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值