数据类型与运算符

public class Test02{
       public static void main(String[] args){
//1个字节占8个2进制位,java没采用ASCII字符集,而是采用unicode字符集
/* java是一种强类型语言
* 【1】常量是有数据类型的
* 【2】变量都必须声明其数据类型
* 【3】数据类型分为基本数据类型和引用数据类型
* 【4】基本类型数据分为--数值型{数值型又分为整数类型(byte、short、int、long)和浮点类型(float、double)}、字符型(char)、布尔型(boolean),
* 【5】引用数据类型分为类(class)、接口(interface)和数组
*/
//声明一个变量的格式如下:

       int age = 10;

//变量类型 变量名 = 变量的值;

       System.out.println(age);
//结果为10

/* 变量声明举例:
* --double salary(薪水)
* --boolean done
* --long money
* --int age
*
* 【1】整数类型
* --byte占用1个字节,取值范围为-128 ~ 127;如年龄byte age = 99;
* --short占用2个字节,取值范围为-2^15 ~ 2^15-1;如工资short sal = 20000;
* --int占用4个字节,取值范围为-2^31 ~ 2^31-1;如存额int money = 200000;
* --long占用8个字节,取值范围为-2^63 ~2^63-1;如long arr = 2000000000;
* 重点:所有整数类型数字系统都会默认为int类型,如果想要该数字变为long类型,则需在数字后面加上一个L;
*/

// 【2】浮点数类型
// --float占用4个字节,小数点后面最多保留7位有效数字
       float a = 3.131415679f;
       System.out.println(a);
//结果为3.1314156

// --double占用8个字节,小数点后面最多保留16位有效数字
       double b = 3.1234567951245293556;
       System.out.println(b);
//结果为3.1234567951245293
// 重点:所有浮点数类型数字系统都会默认为double类型,如果想要该数字变为float类型,则需要在数字后面加上一个f,程序员默认使用float类型

// 【3】字符数据类型
// --char占用2个字节,用来表示unicode编码表中的字符,char类型在内存中存储的是该字符的unicode编码值,所有char类型可以当做int类型来处理
// 单引号'用来表示字符常量,例如'A'是一个字符,它与"A"是不同的,"A"表示含有一个字符的字符串
// char c = '@';
// String string = "abcdefgh";
// java语言还允许使用转义符'\'来将其后的字符转变为其它的含义,如:
// char c = '\n';//代表换行符
// 常用转义符及其含义如下:
// \b 退格; \n 换行; \r 回车; \t 制表符(tab); \" 双引号; \' 单引号; \\ 反斜杠;

// 【4】布尔数据类型
// boolean类型有两个值,true和false,在内存中占一个二进制的位,boolean类型用来判断逻辑条件,一般用于程序流程控制
// if(whether && !done)
       boolean d = 1 > 2;
       System.out.println(d);
//结果为false

// 【5】final常量
// 使用final修饰的变量,只能被初始化一次,变成了常量,final常量是有名称的
       final double PI = 3.14;
       //PI = 3.15; //error
       double r = 4;
       double area = PI*r*r;
       double circle = 2*PI*r;
       System.out.println("area =" + area);
       System.out.println("circle =" + circle);
//结果为area =50.24;circle =25.12
//这段代码是为了告诉我们经过final修正后,area和circle中PI的值已经被固定为3.14

// 【6】命名规则(规范)
// 所有变量、方法、类名要做到见名知意
// 1.变量、方法名:
// --首字母小写和驼峰原则
// 如:方法 run(),runRun(), 变量age,ageNew ,monthSalary,userName
// 2.常量:
// --大写字母和下划线
// 如: max, MAX_VALUE
// 3.类名:
// --首字母大写和驼峰原则
// 如: Man, GoodMan


// 运算符
// 【1】/ 和 %的区别
// %称为取模,就是求余数

       int e = 20;
       int f = 6;
       System.out.println(e/f);
       System.out.println(e%f);
//结果为e/f的值为3,e%f的值为2
// 当数据类型不一致的拓展练习:
       int h = 20;
       float j = 6;
       System.out.println(h/j);
       System.out.println(h%j);
//结果为h/j的值为3.3333333,h%f的值为2.0
// 【2】++和--
       System.out.println(e++);
       System.out.println(e);
       System.out.println(f--);
       System.out.println(f);
//结果为e++的值为20,e的值为21,f--的值为6,f的值为5
//运算符在前后的区别拓展:
       System.out.println(++h);
       System.out.println(--j);
//结果为++h的值为21,--j的值为5.0
// ++和--在数值前,直接显示自增(自减)运算的结果,数值直接+1或-1;在数值后,先输出数值,再进行自增(自减)运算,例如:
       int aa = 2;
       int bb = ++aa;
       int cc = 2;
       int dd = cc++;
       System.out.println(aa);
       System.out.println(bb);
       System.out.println(cc);
       System.out.println(dd);
//结果为aa的值为3,bb的值为3,cc的值为3,dd的值为2

// 【3】扩展赋值运算符
// += -= *= /= %=
// a += 10,等同于a = a + 10;
// a -= 10,等同于a = a - 10;
// 以此类推,例如:
       int k = 20;
       System.out.println(k +=5);
       System.out.println(k *=5);
//结果为k +=5的值为25,k *=5的值为125(k的值经过+=已变为25)

// 【4】关系运算符
// 运算的结果是布尔值:true/false
// >(大于); <(小于); ==(等于); >=(大于或等于); <=(小于或等于); !=(不等于)
       System.out.println(k != 3);
       System.out.println(k == 10);
//结果为k != 3的值为true,k == 10的值为false

// 【5】逻辑运算符
// &(逻辑与) , &&(短路与) , |(逻辑或) , ||(短路或) , ^(逻辑异或) , !(逻辑反)
// 逻辑运算符两边写的都是返回布尔值的表达式
// 逻辑与&和短路与&&两者的区别:
// &表达式两边返回的都是true,则结果为true;当表达式左边返回flase,仍继续运行第二个表达式,即无论任何情况&两边的表达式都会参与计算
// &&表达式两边返回结果为true,则结果为true;当表达式左边返回flase,则不会继续运行第二个表达式
//逻辑与:
       System.out.println(e>10 & f/0<3); //0不能当分母,故意写错来判断逻辑运算的区别
//返回结果为Exception in thread "main" java.lang.ArithmeticException: / by zero
// at Test02.main(Test02.java:148)
//短路与:
       System.out.println(h<10 && j/0<3);
//返回结果值为false

//逻辑或|表达式两边有一个返回true,则结果为true;当表达式左边返回flase,仍继续运行第二个表达式,即无论任何情况|两边的表达式都会参与计算
//短路或||表达式两边有一个返回true,则结果为true;当表达式左边返回flase,则不会继续运行第二个表达式

//逻辑或:
       System.out.println(e>10 | f/0<3); //0不能当分母,故意写错来判断逻辑运算的区别
//返回结果为Exception in thread "main" java.lang.ArithmeticException: / by zero
// at Test02.main(Test02.java:148)
//短路或:
       System.out.println(h<10 || j/0<3);
//返回结果值为false

//逻辑反:
//! 即取反的意思
       int m = 10;
       System.out.println(!(m>30));
//10>30,应该为false,但前面加了!,逻辑反变成了true

//位运算符:
//位运算符中也有&、|和^这3个运算符,和逻辑运算符的区别如下:
//当表达式两边返回的是布尔值的时候,当逻辑运算符来用
//当表达式两边返回的是数字类型的时候,当位运算符来用
//按位与:&
       int n = m & f;
       System.out.println(n);
//结果为0,m=10,f=6;将表达式两边的数字转换为二进制,对应位上的是1,则结果是1,对应位上是0,则结果是0
//10的二进制1010
// 6的二进制 0110
//按位或:|
       int u = 14;
       int y = 6;
       int o = u | y;
       System.out.println(o);
//结果为14,将表达式两边的数字转换为二进制,对应位上有一个是1,则结果是1,对应位上都是0,则结果是0
//14的二进制为1110
//  6的二进制为0110
//结果还是        1110
//按位异或:^
       System.out.println(u^y);
//结果为8,将表达式两边的数字转换为二进制,对应位上相同,则结果是0,对应位上不同,则结果是1
//14的二进制为1110
//  6的二进制为0110
//结果是           1000


}
}

posted @ 2019-04-17 21:10  SeanGuo  阅读(476)  评论(0编辑  收藏  举报