)
java基础学习—基本数据类型知识,笔记来源于传智。基本数据类型整形相关:byte: 8bitshort: 16bitint: 32bitlong: 64bit浮点形相关:float: 32bit保留7位小数double: 64bit 保留15位小数其他:1.char: 16bit2. boolean(布尔): 32bit或8bit注意:占用内存特殊的是布尔类型单独声明一个boolean变量时占的是4个字节但是当声明一个布尔数组时则数组中的元素占1个字节如果需要把该数据表示成一个long类型的数据那么需要加数据后面加上L表示L是不区分大小写的但是建议使用大写。,可是我们经常会做一下操作byte a 10;这里不报错的原因是java编译器在编译时可以识别常量的值并判断是否超过有效值。但是编译时不会识别变量的值如下int a 10; byte i a;如果一个小数没有加上任何标识的时候那么该小数默认是double类型的数据如果需要表示成float类型那么需要在小数的后面加上f表示。f不区分大小写的类型转化小数据类型转大数据类型 称为自动类型转换大数据类型转小数据类型成为强制类型转换在强制转化时格式如下否则会报错int a 5; byte b (byte)a;不同类型数据运算凡是byte、short 、 char数据类型数据在运算的时候都会自动转换成int类型的数据再运算。byte a1 1; byte a2 2; byte a3 (byte)(a1a2);//不强转会报错 System.out.println(a3); //32.两个不同数据类型的数据在运算的时候结果取决于大的数据类型int a 100; byte b 5; byte c (byte)(ba);负数的存储int i 128; //4个字节 byte b (byte) i; // 1个字节 System.out.println(b); // -128注意在计算机存储中首位为1的一定是负数首位为0一定为整数。且负数存储的补码补码的计算取绝对值取反1这里输出的是-128那么看下-128的由来0000 0000 0000 0000 1000 0000------------------------------强转时取8个字节得到1000 0000 首位为1代表存的是负数那我们计算下他代表的值1000 0000减去0000 0001得0111 1111取反1000 0000 转为10精制为128加上负号就是-128运算符算术运算符: (正数、加法、连接符) 连接符的作用 让任何的数据都可以与字符串进行拼接。 如果号用于字符串的时候那么号就是一个连接符并不是 做加法功能了。 连接符要注意任何类型的数据与字符串使用连接符连接那么结果都是字符串类型的数据。 - * / (除法) %(取模、取余数)class Demo3 { public static void main(String[] args){ int i1 1; int i2 2; System.out.println(i1 world); //1 world // 计算机每次运算的时候只能取两个 数据运算。 System.out.println(123 world123); // 6world123 int a 12; int b 7; System.out.println(a/b); //1 //在java中做取模 运算的时结果的正负号是取决于被除数。 System.out.println(结果:(10%3)); // 1 System.out.println(结果:(10%-3)); // 1 System.out.println(结果:(-10%3)); // -1 System.out.println(结果:(-10%-3)); // -1 } } 自增 : 自增就是相当于操作数1. 前自增位于操作数的前面。 比如 a 前自增先自增后使用。 后自增 先使用后自增。class Demo4 { public static void main(String[] args) { int a 0; int sum a; //前自增。 a a1 sum a int sum a; //后自增 sum 0 , a a1 /* 后自增在jvm的运行原理 因为后自增要使用 到没有1之前 的值那么jvm会先声明一个变量用于保存没有1之前的值。 int i 0; i temp; 原理 1. int temp i; // 声明了一个临时变量用于记录了i没有加1之前的值。 2. 自增。 i i1; i 1; 3. temp把用作了表达式 的结果。 i的值发生了几次变化 i 0 ----- 1---- 0 */ int i 0; i i; // 后自增... 后自增要使用到没有1之前的值。 System.out.println(i i);//0 } }自减 操作数-1.前自减 先自减后使用。后自减 先使用后自减。class Demo5 { public static void main(String[] args) { /* int i 1; int sum --i; //前自减 i i-1 , sum i; int sum i--; // 后自减 sum i ; i i-1; System.out.println(sum sum); // 0 1 */ int num 10; //int sum 10* num; //后自增 int sum 10* num; //前自增 System.out.println(sum sum); } }赋值运算符 (赋值运算符) - * / %class Demo6 { public static void main(String[] args) { int i 10; // 把10赋予给i变量。 i2; // i i2; System.out.println(i i); byte b1 1; byte b2 2; //b2 (byte)(b2b1); //需要强制类型转换 b2b1; //b2 b2 b1; b2b1 在编译的时候java编译器会进行强制类型转换不需要我们手动转换了。 System.out.println(b2 : b2); } }比较运算符 比较运算符的结果都是返回一个布尔值的。 (判断是否等于) 用于比较两个基本数据类型数据的时候比较的是两个变量所存储的值是否一致. 用于比较两个引用类型变量的数据时候比较的是两个 引用类型变量所记录的内存地址是否一致. ! (不等于) (大于) (小于) (大于等于) (小于等于)class Demo7 { public static void main(String[] args) { /* int a 10; int b 10; System.out.println(10等于10吗 (ab)); System.out.println(10不等于1吗 (10!1) ); //true */ byte b 10; long l 30; System.out.println(lb); //两个不同类型的数据是否可以比较呢.,可以的但是两个不同类型的数据必须是兼用的数据。 //这个比较的过程会先把b转换了long类型的数据然后再进行比较 。 System.out.println(a50);//true } }逻辑运算符 逻辑运算符的作用是用于连接布尔表达式的。 与,并且规律 只有左右变量同时 为true那么结果才是true否则就为false。| (或,或者)规律 只要两边的布尔表达式有一边为true那么结果就为true只有两边同时为false 的时候结果才是false.^ (异或)规律 只要两边的布尔表达式 结果不一致那么结果就为true如果左右两边 的布尔表达式一致那么就为false. (非) (短路与\双与)短路与和单与符号的相同与不同点相同点 短路与和单与运算 的结果是一样的。 不同点 使用短路与的时候如果左边的布尔表达式为false则不会在运算右边的布尔表达式从而提高了 效率。使用单与的时候即使发现左边的布尔表达式为false还是会运算右边的布尔表达式的。只有左边的布尔表达式为false时双与的效率才要高于单与的.|| (短路或\双或)短路或与单或的相同点与不同点相同点运算的结果是一致 的。 不同点使用短路或的时候当发现左边的布尔表达式为true时则不会运算右边的布尔表达式。 使用单或的时候 发现左边的布尔表达式为true还是会运算右边布尔表达式。位运算符位运算符就是直接操作二进制位的。 (与) | (或) ^ (异或) 规律 如果操作数A连续异或同一个操作数两次那么结果还是操作数A。 应用 对数据加密. ~ (取反)class Demo9{ public static void main(String[] args){ System.out.println(63); // 2 System.out.println(6|3); // 7 System.out.println(6^3); // 5 System.out.println(~7); // -8 } }移位运算符(左移)规律一个操作数进行左移运算的时候结果就是等于操作数乘以2的n次方n就是左移 的位数.31 32(1) 6;32 32(2) 1233 3*2(3) 24(右移)规律一个操作数在做右移运算的时候实际上就是等于该操作数除以2的n次方n就是右移的位数。31 3 / 2(1) 1 32 3 / 2(2) 0 。。 (无符号右移) 无符号右移与右移的区别进行右移运算的时候如果操作数是一个正数那么左边的空缺位使用0补如果操作数是一个负数那么左边的空缺位使用1补。而使用无符号右移的时候不管是正数还是负数都统一使用0补。三元运算符(三目运算符)格式;布尔表达式值1:值2 ;三元运算符要注意的细节使用三元运算符的时候一定要使用该表达式返回的结果或者是定义一个变量接收该表达式返回的结果否则报错。