马士兵J2SE-第二章-J2SE基础语法-标识符、关键字、数据类型转换

局部变量(方法或语句块内定义的变量)

成员变量(方法外部,类的内部定义的变量)

public class test{
    static int j=6;
public static void main(String[] args){
    int i=0;
    System.out.println("i= "+i);
	System.out.println("j= "+j);
}
}

输出结果:

 

i= 0

j= 6

 

字符型

public class test{
    public static void main(String[] args){
	boolean b=false;
	int x,y=9;
	char c1,c2;
	c1='\u534e';
	c2='c';

	//x=12;
	System.out.println("b= "+b);
	System.out.println("x= "+x);
	System.out.println("y= "+y);
	System.out.println("c1= "+c1);
	System.out.println("c2= "+c2);
	}
}

输出结果:

D:\>javac test.java
test.java:11: 可能尚未初始化变量 x
        System.out.println("x= "+x);
                                 ^
1 错误

 

y才是9,x未初始化。

 

修改后,解除注释以后的结果是:

b= false

x= 12

y= 9

c1= 华

c2= c

 

JAVA八种数据类型转化,溢出,所占存储空间,表数范围

public class test{
	public static void main(String[] args){
		int i1=123;
		System.out.println("i1= "+i1);

		int i2=456;
		System.out.println("i2= "+i2);

		double d1=(i1+i2)*1.2;//int->double
		System.out.println("d1= "+d1);

		float f1=(float)((i1+i2)*1.2);//int->float,需要加强制转换符
		System.out.println("f1= "+f1);

		byte b1=67;
		System.out.println("b1= "+b1);

		byte b2=89;
		System.out.println("b2= "+b2);

		byte b3=(byte)(b1+b2);//byte->int,需要加强制转换符,越界了
		System.out.println("b3= "+b3);

		double d2=1e200;
		System.out.println("d2= "+d2);

		float f2=(float)d2;//double->float,溢出
		System.out.println("f2= "+f2);

		float f3=1.23f;//必须加f
		System.out.println("f3= "+f3);

		long l1=123;
		System.out.println("l1= "+l1);

		long l2=3000000000L;//必须加L
		System.out.println("l2= "+l2);

		float f=l1+l2+f3;//系统将转化为float运算
		System.out.println("f= "+f);

		long l=(long)f;//强制转换会舍去小数部分(不是四舍五入)
		System.out.println("l= "+l);
	}

}

 输出:

i1= 123
i2= 456
d1= 694.8
f1= 694.8
b1= 67
b2= 89
b3= -100
d2= 1.0E200
f2= Infinity
f3= 1.23
l1= 123
l2= 3000000000
f= 3.0E9
l= 3000000000

 

分析:

byte b1=67;
  System.out.println("b1= "+b1);
  
  byte b2=89;
  System.out.println("b2= "+b2);
  
  byte b3=(byte)(b1+b2);//byte->int,需要加强制转换符,越界了
  System.out.println("b3= "+b3);

byte占存储空间 1字节,表数范围-128~127
156在内存中是:1001 1100(最高一位是符号位)
补码计算,按位取反再加1得:1110 0100
因其符号位是1,所以是负数:-100

 

类型        占用存储空间        表数范围

byte          1字节                      -128~127

short        2字节                     -2(15)~2(15)-1

int             4字节                     -2(31)~2(31)-1

long         8字节                     -2(63)~2(63)-1

 

public class test{
	public static void main(String[] args){
		int i=1,j=12;
        System.out.println("i= "+i);
        System.out.println("j= "+j);
		float f1=(float)0.1;//0.1f 这两者是有区别的,(float)0.1是把八个字节的double强转为四个字节的float,而0.1f就是四个字节的float。
        float f2=0.1f;
		System.out.println("f1= "+f1);
		System.out.println("f2= "+f2);
	    float f3=123;
	    System.out.println("f3= "+f3);
	    long l1=12345678,l2=88888888L;
	    System.out.println("l1= "+l1);
	    System.out.println("l2= "+l2);
	    double d1=2e20,d2=124;
	    System.out.println("d1= "+d1);
	    System.out.println("d2= "+d2);
	    i=j+10;
	    System.out.println("i= "+i);
	    i=i/10;
	    System.out.println("i= "+i);
	    i=(int)(i*0.1);
	    System.out.println("i= "+i);
	    char c1='a',c2=125;
	    System.out.println("c1= "+c1);
	    System.out.println("c2= "+c2);
	    char c=(char)(c1+c2-1);
	    System.out.println("c= "+c);
	    byte b1=1,b2=2,b3=127;
	    System.out.println("b1= "+b1);
	    System.out.println("b2= "+b2);
	    System.out.println("b3= "+b3);
	    byte b=(byte)(b1-b2);
	    System.out.println("b= "+b);
	    float f4=f1+f3;
	    System.out.println("f4= "+f4);
	    float f5=(float)(f1+f3*0.1);
	    System.out.println("f5= "+f5);
	    double d=d1*i+j;
	    System.out.println("d= "+d);
	    float f=(float)(d1*5+d2);
	    System.out.println("f= "+f);
	}
}

输出:

i= 1
j= 12
f1= 0.1
f2= 0.1
f3= 123.0
l1= 12345678
l2= 88888888
d1= 2.0E20
d2= 124.0
i= 22
i= 2
i= 0
c1= a
c2= }
c= ?
b1= 1
b2= 2
b3= 127
b= -1
f4= 123.1
f5= 12.4
d= 12.0
f= 1.0E21

 

public class test{
    public static void main(String[] args)
	{
	int i=1,j=2;
	float f1=(float)0.1;    float f2=123;
	long l1=12345678,l2=888888888888l;
	double d1=2e20,d2=124;
	byte b1=1,b2=2,b3=(byte)129;
	j=j+10;
	i=i/10;
	i=(int)(i*0.1);
	char c1='a',c2=125;
	byte b=(byte)(b1-b2);
	char c=(char)(c1+c2-1);
	float f3=f1+f2;
	float f4=(float)(f1+f2*0.1);
	double d=d1*i+j;
	float f=(float)(d1*5+d2);
	System.out.println(" i="+i+" j="+j+" f1="+f1+" f2="+f2+" l1="+l1+" l2="+l2+" d1="+d1+" d2="+d2+" b1="+b1+" b2="+b2+" b3="+b3
			+" c1="+c1+" c2="+c2+" b="+b+" c="+c+" f3="+f3+" f4="+f4+" d="+d+"\n"+" f="+f);
	}
}

//byte占存储空间 1字节,表数范围-128~127
//129在内存中是:1000 0001(最高一位是符号位)
//补码计算,按位取反再加1得:1111 1111
//因其符号位是1,所以是负数:-127

输出结果:

 i=0 j=12 f1=0.1 f2=123.0 l1=12345678 l2=888888888888 d1=2.0E20 d2=124.0 b1=1 b2=2 b3=-127 c1=a c2=} b=-1 c=? f3=123.1 f4=12.4 d=12.0
 f=1.0E21

时间: 2024-11-02 23:25:38

马士兵J2SE-第二章-J2SE基础语法-标识符、关键字、数据类型转换的相关文章

马士兵J2SE-第三章-面向对象-基础及重载

面向对象: //面向对象的方法写一段程序,要求能够手动修改年月日的信息 class Date { private int day; private int month; private int year; public Date (int d, int m, int y) { day = d; month = m; year = y; } public void setDay(int d) { day=d; } public void setMonth(int m) { month = m; }

马士兵J2SE-第二章-J2SE基础语法(周六补充)-递归、非递归

//求5的阶乘 public class test { public static void main(String[] args) { System.out.println(method(4)); } public static int method(int n) { if (n==1) return 1; else return n*method(n-1); } } 输出:24     //利用递归求Fibonacci数列:1,1,2,3,,5,8--第40个数的值.数列满足递推公式: //

马士兵J2SE-第二章-J2SE基础语法-运算符

自加和自减运算符 (++/--) 在前时先运算再取值,在后时先取值再运算 public class test { public static void main(String[] args){ int i1 = 10, i2 = 20; int i =(i2++); System.out.println("i = "+i); System.out.println("i2 = "+i2); i=(++i2); System.out.println("i =

马士兵J2SE-第六章-常用类-基本数据类型包装类、Maths类、File类

基本数据类型包装类 public class test { public static void main(String[] args) { Integer i=new Integer(100); Double d=new Double("123.456"); int j=i.intValue()+d.intValue(); float f=i.floatValue()+d.floatValue(); System.out.println(j); System.out.println(

JAVA AJAX教程第二章-JAVASCRIPT基础知识

开篇:JAVASCRIPT是AJAX技术中不可或缺的一部分,所以想学好AJAX以及现在流行的AJAX框架,学好JAVASCRIPT是最重要的.这章我给大家整理了一些JAVASCRIPT的基础知识.常用代码和事件汇总. 一.基础知识: 1.document.write(""); 输出语句 2.JS中的注释为// 3.传统的HTML文档顺序是:document->html->(head,body) 4.一个浏览器窗口中的DOM顺序是:window->(navigator,

《C# to IL》第二章 IL基础

-2- 如果你真的想要理解C#代码,那么最好的方法就是通过理解由C#编译器生成的代码.本章 和下面两章将关注于此. 我们将用一个短小的C#程序来揭开IL的神秘面纱,并解释由编译器生成 的IL代码.这样,我们就可以"一箭双雕":首先,我们将揭示IL的奥妙,其次,我们将会更 加直观地理解C#编程语言. 我们将首先展示一个.cs文件,并随后通过C#编译器以IL编写一个程序 .它的输出和cs文件是相同的.输出将会显示IL代码.这会增强我们对C#和IL的理解.好吧,不再啰嗦, 这就开始我们的冒险

第二章 Servlet基础

这章我们主要的目标 理解Servlet Servlet的编码和部署 Servlet生命周期 Servlet的配置 Servlet与容器交互    什么是Servlet -是运行在Web服务器或应用服务器上的Java程序 -在Web上创建动态内容的有效而强大的解决方案 -由容器来管理生命周期与Web服务器交互 -由Sun规范了其功能    Servlet的规范组成   Web应用程序  Servlet和HTTPServlet   过滤器  安全  国际化       Servlet生命周期 Ser

马士兵J2SE-第五章-数组

    //数组对象的创建 public class test { public static void main(String[] args) { int[] s; s=new int[5]; for(int i=0;i<5;i++) { s[i]=i*2+1; } System.out.println(s[4]); } }   输出: 9   //元素为引用数据类型的数组的创建 public class test { public static void main(String[] args

初学JavaScript第二章_基础知识

JavaScript的对象都是实例化了的,只可以使用而不能够创建继承于这些对象的新的子类. window对象为所有对象的Parent window对象的主要属性有:Name,Length,Parent,Self,Top,Status,Default Status,Opener,Closed. window对象的主要方法有:Item,alert,blur,close,confirm,open,focus,showModalDialog. Document对象的常用属性:alinkcolor,Anc