其实和C++差不多……几种主要数据类型的测试
package work.w0218c;
public class datatype {
/**
* @param args
*
* 变量是存储数据的唯一单元
*
* 整型数据
* byte,short,int,long
* byte一个字节,-128-127
* short两个,-2^15-2^15-1
* int四个,-2^31-2^31-1
* long八个,-2^63-2^63-1
*
* long>int>short>byte
*
* 浮点
* float 4字节 具体参考 IEEE754
* double 8字节
*
* 给数据赋初值时如果不强制类型了,整数将被默认为int型,小数被默认为double类型
* 因此float型数据赋予小数值或者添加一个较大的整数必须用float f=10.01F或者long l=465465464654L这样(此处大小写不敏感)(自动转换)
*
* long a=6650;
* byte b=byte(a);
* 强制转换为显式转换,如果目标范围较小将丢失数据,发生溢出之后将从最小值开始循环(栈结构)
*
* 字符
* char 2字节,0-2^16-1(65535)
*
* 赋值时需要单引号
*
* 布尔
* boolean,1字节,实用1Bit,具体有争议,只有true false
*
* 引用型
* 类
* 接口
* 数组
*
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
/* byte b;
b=127;
long c;
c=2000000000;*/
/* System.out.println("b="+b+" c="+c);
{
{
long i=65559;
short s;
s=(short)i;
System.out.println(s);
}
}*/
//点钟法?
{
long l=156;
byte b1=0;
b1=(byte)l;
System.out.println(b1);
//byte一个字节,-128-127
long b2;
b2=156-127-128-1;
System.out.println(b2);
}
{
double l=65536.55;
short b=0;
b=(short)l;
System.out.println(b);
//byte一个字节,-128-127
// long b1;
// b1=(long)l-65536;
System.out.printf("%.4f/n",l);
}
{
//整形转char型
long l=67;
char c='a';
c=(char)l;
System.out.println(c);
}
}
}
package work.w0218c;
// package work.w0218c;
public class datatypeconvetor {
/**
* @param args
* 类型转换
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// int i=100;
// byte b=90;
//byte类型小于int,因此i可以等于b,可自动转换类型并兼容
// i=b;
//i为int,表示范围大于b,无法自动转换。
// b=i;
// short s=200;
// long l=500;
/*
b=s;
s=b;
l=i;
i=l;
l=s;
s=l;
*/
// float f=10.0f;
// boolean bo=true;
//char型可被int与long以及浮点兼容,而char型不兼容任何数列(本质上是因为char没有负数)。
//直接对char赋整数值即为赋字符的ASCII码
char c='a';
c=67;
System.out.println("char c="+c);
//bool不与任何类型兼容。
}
}
package work.w0218c;
// package work.w0218c;
/**
*
* @author Administrator
*变量定义:
*数据类型 变量名 [=初始值]
*变量名不得为内置关键字或者纯数字以及特殊符号(符号仅限_)以及空格
*
*定义在类中的为全局变量
*方法中的为局部变量
*局部变量优先于全局中的变量
*变量无法超出自身的生命周期
*如要使用可使用this.全局变量,但是不得为static
*同一个作用域(即{}中的内容)中不得重复
*
*
*1.0F表示将1.0转换为float类型
*/
public class definevar {
byte b1=15;
static byte b2=15;
public static void main(String[] args)
{
/**l long
* d t2d
* t test
*/
byte b1=10,b2=50,b3=20;
float f=128;
float ff=1.0F;
float fl1=123456789123456789F;
double dt1=1.000000000000001,dt2=11.000000000000001,dt3=111.000000000000001;
double dd=1.000000000000001D,dd1=11.000000000000001D,dd2=111.000000000000001D;
double dl1=123456789123456789123456789d;
System.out.println("b1="+b1+" b2="+b2+" b3="+b3);
//System.out.println("globalb1="+this.b2);
System.out.println("ff="+ff+" f="+f);
System.out.println("dt1="+dt1+" dt2="+dt2+" dt3="+dt3);
System.out.println("dd="+dd+" dd1="+dd1+" dd2="+dd2);
System.out.println("dl1="+dl1);
System.out.println("fl1="+fl1);
}
}
package work.w0218c;
// package work.w0218c;
public class InitVarValue {
/**
* @param args
* 全局变量使用前可不赋值,有默认值。
* 局部变量使用前必须赋值
*/
static byte gb;//0
static short gs;//0
static long gl;//0L
static float gf;//0.0F
static double gd;//0.0D
static boolean gbo;//false
static char gc;//\u0000
public static void main(String[] args) {
// TODO Auto-generated method stub
byte b=16;
short s=1;
double d=1;
boolean bo=false;
char c=1;
System.out.println("gb="+gb+" gs="+gs+" gd="+gd+" gbo="+gbo+" gc="+gc);
System.out.println("b="+b+" s="+s+" d="+d+" bo="+bo+" c="+c);
}
}
package work.w0218c;
// package work.w0218c;
public class ScopeVar {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int num=10;
if (num==10)
{
int num1=num*num;
System.out.println("num1="+num1+" num="+num);
}
// System.out.println("num1="+num1+" num="+num);
System.out.println("num="+num);
}
}