`
Mini_Xiao
  • 浏览: 6652 次
  • 性别: Icon_minigender_2
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

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

    博客分类:
  • java
阅读更多

第一节   基本数据类型和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
1
1
分享到:
评论

相关推荐

    C++大学教程

    1.9 Java、Internet与万维网--------------------------------------------7 1.10 其它高级语言------------------------------------------------------8 1.11 结构化编程-----------------------------------...

    java学习笔记 初学者必读

    17.3.1. 在基本数据类型和封装类之间的自动转换 17-69 17.4. 类型安全的枚举 17-70 17.5. 静态引入 17-71 17.6. C风格的格式化输出 17-72 17.7. Building Strings(StringBuilder类) 17-73 17.8. 可变长的参数 17-73 ...

    corejavaNoteBook

    17.3.1. 在基本数据类型和封装类之间的自动转换 17-69 17.4. 类型安全的枚举 17-70 17.5. 静态引入 17-71 17.6. C风格的格式化输出 17-72 17.7. Building Strings(StringBuilder类) 17-73 17.8. 可变长的参数 17-73 ...

    Java2游戏编程.pdf

    2.2.7 Java数据类型、数组和标识符需要记忆的要点 2.3 Java中的运算符 2.3.1 赋值运算符 2.3.2 比较运算符 2.3.3 算术运算符 2.3.4 自增和自减运算符 2.3.5 更多的整数运算符 2.3.6 使用点运算符 2.3.7 instanceof...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    3.4 小结:基本数据类型—— Java中一切数据和运算的基础 63 3.5 习题 65 第4章 Java中的程序执行流程 67 教学视频:1小时57分钟 4.1 顺序执行 67 4.2 使用if-else让程序懂得判断 68 4.2.1 if语句 68 4.2.2 ...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    3.4 小结:基本数据类型—— Java中一切数据和运算的基础 63 3.5 习题 65 第4章 Java中的程序执行流程 67 教学视频:1小时57分钟 4.1 顺序执行 67 4.2 使用if-else让程序懂得判断 68 4.2.1 if语句 68 4.2.2 ...

    JAVA_Thinking in Java(中文版 由yyc,spirit整理).chm

    2.4 新建数据类型:类 2.4.1 字段和方法 2.5 方法、自变量和返回值 2.5.1 自变量列表 2.6 构建Java程序 2.6.1 名字的可见性 2.6.2 使用其他组件 2.6.3 static关键字 2.7 我们的第一个Java程序 2.8 注释和嵌入文档 ...

    java初学者必看

    6.1.6 基本数据类型数组 6.1.7 对象数组 6.1.8 数组参数 6.2 二维数组和多维数组 6.2.1 二维数组的声明 6.2.2 二维数组的初始化 6.2.3 二维数组的空间模型 6.2.4 二维数组的使用 6.3 数组操作 6.3.1 排序...

    疯狂JAVA讲义

    6.1 基本数据类型的包装类 167 6.2 处理对象 170 6.2.1 打印对象和toString方法 170 6.2.2 ==和equals比较运算符 172 6.3 类成员 175 6.3.1 理解类成员 175 6.3.2 单例(Singleton)类 176 6.4 final修饰符 ...

    java编程基础,应用与实例

    3.6.3 String型对象与基本数据类型间的运算 25 3.7 运算符 25 3.7.1 逻辑非(!) 26 3.7.2 位非运算符(~) 26 3.7.3 符号运算符(+、-) 27 3.7.4 增减运算符(++、--) 27 3.7.5 算术运算符(+、-、*、/) 29...

    Thinking in Java(中文版 由yyc,spirit整理).chm

    2.4 新建数据类型:类 2.4.1 字段和方法 2.5 方法、自变量和返回值 2.5.1 自变量列表 2.6 构建Java程序 2.6.1 名字的可见性 2.6.2 使用其他组件 2.6.3 static关键字 2.7 我们的第一个Java程序 2.8 注释和嵌入文档 ...

    corejava培训文档

    17.3.1. 在基本数据类型和封装类之间的自动转换 17.4. 类型安全的枚举 17.5. 静态引入 17.6. C风格的格式化输出 17.7. Building Strings(StringBuilder类) 17.8. 可变长的参数 17.9. JAVA5.0 的注释 (Annotation...

    java 编程入门思考

    2.4 新建数据类型:类 2.4.1 字段和方法 2.5 方法、自变量和返回值 2.5.1 自变量列表 2.6 构建Java程序 2.6.1 名字的可见性 2.6.2 使用其他组件 2.6.3 static关键字 2.7 我们的第一个Java程序 2.8 注释和嵌入文档 ...

    Java初学者入门教学

    2.4 新建数据类型:类 2.4.1 字段和方法 2.5 方法、自变量和返回值 2.5.1 自变量列表 2.6 构建Java程序 2.6.1 名字的可见性 2.6.2 使用其他组件 2.6.3 static关键字 2.7 我们的第一个Java程序 2.8 注释和嵌入文档 ...

    java联想(中文)

    2.4 新建数据类型:类 2.4.1 字段和方法 2.5 方法、自变量和返回值 2.5.1 自变量列表 2.6 构建Java程序 2.6.1 名字的可见性 2.6.2 使用其他组件 2.6.3 static关键字 2.7 我们的第一个Java程序 2.8 注释和嵌入文档 ...

    JAVA_Thinking in Java

    2.4 新建数据类型:类 2.4.1 字段和方法 2.5 方法、自变量和返回值 2.5.1 自变量列表 2.6 构建Java程序 2.6.1 名字的可见性 2.6.2 使用其他组件 2.6.3 static关键字 2.7 我们的第一个Java程序 2.8 注释和嵌入文档 ...

    Thinking in Java简体中文(全)

    2.4 新建数据类型:类 2.4.1 字段和方法 2.5 方法、自变量和返回值 2.5.1 自变量列表 2.6 构建Java程序 2.6.1 名字的可见性 2.6.2 使用其他组件 2.6.3 static关键字 2.7 我们的第一个Java程序 2.8 注释和嵌入文档 ...

    Thinking in Java 中文第四版+习题答案

    2.4 新建数据类型:类 2.4.1 字段和方法 2.5 方法、自变量和返回值 2.5.1 自变量列表 2.6 构建Java程序 2.6.1 名字的可见性 2.6.2 使用其他组件 2.6.3 static关键字 2.7 我们的第一个Java程序 2.8 注释和嵌入文档 ...

Global site tag (gtag.js) - Google Analytics