public class TestOne {
//main()方法为程序执行入口
public static void main(String[] args) {
//java中的常量分类为 整数常量、小数常量、布尔型常量、字符常量、字符串常量、null常量、
//字符串常量
System.out.println("javastring");
//字符常量 字符常量用单引号,单引号里面只能是一个字符,不能是字符串,如果是字符串会报错
//System.out.println('hello');
System.out.println('A');
System.out.println('b');
//整数常量
System.out.println(1);
//小数常量
System.out.println(1.09);
//布尔型常量 true, false
System.out.println(true);
System.out.println(false);
//null常量
System.out.println();
//基本数据类型 1个字节8位
// 数据类型 点位(字节) 数据范围 默认值
// byte 1 8位 -128~127 最大存储数据量255 0
// short 2 16位 -32768~32767 最大存储数据量 65535 0
// int 4 32位 [-2^31,2^31-1] 0
// long 8 64位 [-2^63,2^63-1] 0L
// char 2 16位 [0,2^16-1] '\u0000'
//float 4 32位 [-2^31,2^31-1] 0.0F
//double 8 64位 [-2^63,2^63-1] 0.0D
//boolean 1位 1位 true 或者false false
//以上8种基本数据类型
// 5种引用数据类型
// 类、接口、数组、枚举、标注 使用new关键字创建出来的类型都是引用类型
// byte,short,char,int,long 都可以存整数类型,
// java语言整数默认为int类型
// float
byte f = 127;
System.out.println(String.format("byte类型最大存储值: %s",f));
int a;
a=10;
System.out.println(a);
long c;
c=68978L;
System.out.println(c);
System.out.println(100); //默认为int类型
float x = 10.001f;
System.out.println(x);
double y = 1.000000000000001D;
System.out.println(y);
//char 类型的值为数据,对应的打印结果为ASCII值对应的字符打印
char s = 97; // a 对应的ASCII码值为97
System.out.println(s); //打印结果为 a
//boolean 类型判断真假
boolean isTrue = false;
if (isTrue){
System.out.println("真");
}
else{
System.out.println("假");
}
// 数据运算的时候,必须要是数据类型一致才能进行,boolean类型不参与计算
//
short j = 10; //2个字节
int i = 20; //4个字节
// 自动数据类型转换 可以把小的数据类型复制给大的数据类型
i = j; // j=i;是不可以的。
System.out.println(i);
//强制类型转换,会发生数据丢失,数据溢出,一般不用;
j =(short) i; // 强制转换数据类型 (强制转换符)大数据类型
System.out.println(String.format("强制类型转换 %s",j));
//自动类型提升,当一个算术表达式包含过个数据类型值时,最终数据类型提升为最高的数据存储类型;小的数据类型自动提升为大的数据类型
int z = 20+ (int) 30.5; //强制转换数据类型后计算
System.out.println(String.format("强制转换数据类型后,精度丢失 %s",z ));
short u = 4;
int v = 5;
int fs= v+u;
System.out.println(String.format("自动提升数据类型,小的变到最大的 %s",fs));
//获取数据变量类型
System.out.println(String.format("自动提升数据类型,小的变到最大的 %s",getType(fs)));
Object fh = v+u; //object 接收到是什么对象就是什么对象
System.out.println(fh);
System.out.println(getType(fh));
System.out.println(new TestOne().equals(fh));
//算术运算
//两个整数相除得到的是小数的时候,小数部分忽略,结果为整数
System.out.println(String.format("两个整数相除 15/4=%s",15/4));
// 如果想要两个整数相除得到要的小数,需要把其中个数转为浮点数,自动提升数据存储类型大小到浮点型
System.out.println(String.format("两个数相除得到小数:15/4=%s",15/(float)4));
//百分号取模运算
System.out.println(String.format("%%取模运算,求余 15%%4= %s",15%4));//字符中的第一个百分号用来进行转义
//取模运算的方向正负,看符号的左边
System.out.println(String.format("取模运算的正负号 -3%%2= %s",-3%2));
System.out.println(String.format("取模运算的正负号 3%%-2= %s",3%-2));
//自增和自减,符号写在前面的时候与后面的时候区别在于,参与运算时符号在前面需要自增1后的值参与运算,符号在后面时其值不自增1参与运营,
int ss = 10;
ss++;
System.out.println(String.format("自增%s",ss));
int yy = 10;
++yy;
System.out.println(String.format("自增%s",yy));
int xx = 10;
int cc = (xx++)+1;
System.out.println(String.format("a++符号在右边先做运算后值其值再加1 (xx++)+1 =%s ",cc));
System.out.println(String.format("此时xx的值为 %s ",xx));
int zz = 10;
int bb = (++zz)+1;
System.out.println(String.format("++a符号在左边先自增加1后的值参与做运算 (++zz)+1 =%s ",bb));
System.out.println(String.format("此时zz的值为 %s ",zz));
//自增++ 和--
int dd = 1;
int r =(++dd)+(dd++);
System.out.println(String.format("自增++ 和-- ,例如 dd=1, (++dd)+(dd++) =%s ",r));
System.out.println(String.format("自增++ 和-- ,例如 dd=1, (++dd)+(dd++) =%s 此时的dd= %s",r,dd));
//赋值运算以及其运算符号
//赋值运算符号 =, += ,-=,*= ,/=, %=
int e = 2 ;
e += 1;//e=e+1
System.out.println(e);
short g = 3;
g += 3; // 如果是写成 g = g+3 这里涉及到数据类型自动提升,3是int类型, g+=3做了自动类型强制转换 g = (short) (g+3) 本身g+3提升为int类型 再强制转换为short类型
System.out.println(getType(3));
System.out.println(String.format("此时的g的值为%s,其类型为%s",g,getType(g)));
// java运算里面的比较运算和逻辑运算
// 与 & 逻辑表达式1 & 逻辑表达式2 ,两个表达式为真结果为true,其中一个为假 结果为false
System.out.println(true & false); // false
System.out.println(true & true); //true
System.out.println(false & false); //false
// 或 | 逻辑表达式1 | 逻辑表达式2 两个表达式其中一个我真,结果为true,两个都为假,结果为false
System.out.println(false | false); //false
System.out.println(true | false ); //true
System.out.println(true | true ); //true
//非 ! 对一个布尔类型取反操作
System.out.println(!false); //true
// 异或 ^ 表达式1 ^ 表达式2 两个表达式结果相同时为false,不同时为true
int va = 1;
int vb = 2;
System.out.println(true ^ true); //false
System.out.println(va==1 ^ vb==2); //false
System.out.println(true ^ false); //true
System.out.println(va==1 ^ vb ==3); //true
System.out.println(false ^ false ); //false
System.out.println(va==2 ^ vb==3); //false
System.out.println(false ^ true); //true
//与 & 只要一个为假,结果为假,无论前面表达式是真是假,后面一个表达式都会执行
//短路与 && 在执行时,只要发现为假时,就不继续往后后执行,直接判定结果为false
// System.out.println(va!=1 & 1==1/0); // 第二个表示式执行时报错
System.out.println(va!=1 && 1==1/0); //false //第一个表示为假,结果都为假,不执行第二个表达式
// 或 | 只要一个为真,结果就为真
//短路或 ||
System.out.println(va==1 || vb == 1/0); //true // 只要一个表达式为真结果为真,不执行第二个表示式
}
public static String getType(Object o){ //获取变量类型方法
// return o.getClass().getName();
return o.getClass().toString(); //使用int类型的getClass()方法
}
@Override
public boolean equals(Object obj) {
return super.equals(obj);
}
}