Javase的数据类型与运算符
--by Xrzhang
1.关键字
定义:关键字是SUN公司事先定义的,有特别意义的单词
特点:在 Java 中关键字都是小写的
组成:
2.标识符
定义:标识符可以标识类名,接口名,变量名,方法名
命名规则:
a) 标识符是由,数字,字母,下划线和美元符号,¥构成,其他符号不可以
b)必须以字母、下划线或美元符号,¥开头,不能以数字开头
特点:
a)关键字不能作为标识符
b)标识符区分大小写
c)标识符理论上没有长度限制
示例:
命名 Java 标标识识符符,,最最好好见见名名知知意意
3.变量(Var)
变量是内存中用来存放特定数据类型数据的一块空间,它的值是可以改变的。Java 中的变量有四个基本属性:变量
名,数据类型,存储单元和变量值
变量名:合法的标识符,以字母,$_开头(见名知意)
变量的数据类型:可以是基本类型和引用类型(必须包含类型)
存储单元:存储单元大小是由数据类型决定的,如:int 为 4 个字节 32 位
变量值: 在存储单元中存放的值
变量的声明格式:
【数据类型 变量名(标识符) *字面值】
4.数据类型
Java 总共有两种数据类型, 主要有基本类型和引用类型, 基本类型有 8 种, 引用数据类型有3 种
<1> 基基本本数数据据类类型型
数值类型
整数型(byte,short,int,long)
浮点型(float,double)
字符类型(char)
布尔类型(boolean,只能取值 true 和 false)
<2> 引引用用数数据据类类型型
数组
类
接口
八种数据类型的取值范围
在计算机内部,所有信息都采用二进制表示,每个二进制由 0 和 1 两种状态,一个字节有 8位,也就是由 8 个 0 或 1 构
成,如果 short 类型的 6 在计算机中是如何存储的,short 是两个字节,那么
short 6 的二进制为:00000000 00000110;
int 类型的 6 在计算机中存储为 32 位:00000000 00000000 00000000 00000110
十十进进制制到到二二进进制制的的换换算算
规则:除 2 取余,逆序输出
如 10 进制 6 二进制换算方式为:
6/2=3 余 0
3/2=1 余 1
1/2=0 余 1
将余数逆序输出就是 6 的二进制表示:110 ,位数不够补零
二二进进制制到到十十进进制制的的换换算算
规则:取出最后一位,从 2 的 0 次方开始乘,将得到的结果相加即可
如:二进制的 110 的十进制换算:
0*2 的 0 次方=0
1*2 的 1 次方=2
1*2 的 2 次方=4
110 的十进制为:0+2+4=6
*数据类型其实就是决定在jvm中开辟多大的内存空间,来存储你的字面值。字面值最终转换为二进制编码,进行存储。因为不管任何语言只要是在计算机中进行操作,都会转换成机器代码,只不过这些操作都是语言帮我们自动处理。
*数据类型运算的时候都是使用int接受,或者比int更大范围的数据去接受。
*整型和浮点型类型大小比较的过程,和自动转换,强制类型转换。
Byte < short <int <long < float < double(float用科学记数法接受long)
*定义过程中,float一定要在结尾加f或者F。Long一定要加l或者L,最好用L 。Double可加可不加。
*小数的前置0可以省略。
5.字符编码
6. 运算符
字符集:通常意义就是单个字符,字符必须以单引号引起来,(''),java语言是16位Unicode编码方式。早期是
public class BiaoShiFu { public static void main(String[] args){ /* 变量:数据类型 变量名 = 字面值; 变量名:$,_ 开头,其他随便(除了java的关键词), 中间不能包含特殊字符串(#,@)和空格等其他字符. */ int age = 30; float cc = 30f; int $$$=100; int $_26 = 100; int $我爱你=13300; //boolean $@ = true; 错误的| //boolean $ @ = true; 错误的 //boolean 2$@ = true; 错误的 print(age); print(cc); print($$$); print($_26); print($我爱你); } public static void print(Object message){ System.out.println("打印的结果是:"+message); } }
public class BiaoShiFu02{ private static int age = 30 ; public static void main(String[] args){ /* 变量:数据类型 变量名 = 字面值; 变量名:$,_ 开头,其他随便(除了java的关键词), 中间不能包含特殊字符串(#,@)和空格等其他字符. 同样用于:方法和类的名称 { }//就是一个作用域 */ //int age = 30; //age = 20;//修改变量在内存中的值.=赋值 print(age); } public static void print(Object message){ System.out.println("打印的结果是:"+message); } }
public class JavaInteger{ private static int age = 30 ; public static void main(String[] args){ /* 为什么在开发中都推荐使用int类型,而不是long也不是short呢. 在业务的开发过程,我们难免会遇到算术运算。+,- * / */ byte a = 100; byte b = 110; int c = a * b; short d = 470; short e = 10; int ff = d + e; long fff = d + e; float fff2 = d + e; float fff3 = d + e; print(c); print(ff); print(fff); print(fff2); print(fff3); } public static void print(Object message){ System.out.println("打印的结果是:"+message); } }
public class JavaInteger02{ private static int age = 30 ; public static void main(String[] args){ byte a = 100; int b = a ; b = 200; int c = b; float e = c; e = 110; double f = a; console(a);//100 console(b);//200 console(c);//200 console(e);//110.0 console(f);//100.0 } public static void console(Object message){ System.out.println("打印的结果是:"+message); } }
public class JavaInteger03{ public static void main(String[] args){ /* float类型:如果接受整型, 定义是比较特殊: 如果float接受的是一个整数.不需要加f或者F 但是如果是小数一定要加f或者F 因为java一个小数的默认数据类型是:double */ float c = 100f; float d = 36.5f;//JavaInteger03.java:12: 错误: 不兼容的类型: 从double转换到float可能会有损失 console(c); console(d); console("=============================="); double cc = 100d; double dd = 36.5d;//默认省去尾巴d或者D double f = 36.589d; double g = 236.589D; double h = d; console(cc); console(dd); console(f); console(g); } //打印方法 public static void console(Object message){ System.out.println("打印的结果是:"+message); } }
public class JavaInteger05{ public static void main(String[] args){ //opacity:0-0.5-1 //opacity:.5等价于opacity:0.5 float a = .35f;//0.35f console(a); double b = .0004548d; console(b); } //打印方法 public static void console(Object message){ System.out.println("打印的结果是:"+message); } }
public class JavaInteger06{ public static void main(String[] args){ double c = 59.8998; int money = (int)c; //直接丢掉小数,留下整数部分,不会四舍五入。 //在开发过程,命令进制在万不得已的情况下,不允许使用强制数据类型转换。 console(money); } //打印方法 public static void console(Object message){ System.out.println("打印的结果是:"+message); } }
public class JavaInteger07{ public static void main(String[] args){ //十进制:0 1 2 3 4 5 6 7 8 9====二进制 1010 int a = -10; a = 100; //八进制 0 1 2 3 4 5 7 ,必须以0开头---- int b = 013; console(a); console(b); //二进制转十进制,2位次幂除以每个进制对应的数字相加等到结构 //十进制转二进制,用十进制除以2的余数,从下往上拼接得到 //十进制转八进制:用10除以8的余数从下往上拼接 //二进制转八进制: 用分组法,每三个一组:从右往左 1 2 4排列。如 //1 0 ===> 1 1 0 ===> 1 0 1 //2 1 ===> 4 2 1 ===> 4 2 1 // 2 =====>6 =====>5 == 265 //10110101===八进制=== //2 6 5 //010 110 101 //十六进制,必须以0x或者0X开头,0-9 a-f,一组数字 int cc = 0x89aed; //0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 //0 1 2 3 4 5 6 7 8 9 a b c d e f //1 ==== 0 1 1 1 ==== 0 1 1 0 //1====== 8 4 2 1 ==== 8 4 2 1 //1===7====6====0x176 console(cc); //八进制,十进制,十六进制都是数字. } //打印方法 public static void console(Object message){ System.out.println("打印的结果是:"+message); } }
public class Test { public static void main(String[] args) { //都是什么进制转成十进制 // System.out.println(Integer.parseInt("013", 8)); // System.out.println(Integer.parseInt("ff", 16)); // System.out.println(Integer.parseInt("ffff", 16)); // System.out.println(Integer.parseInt("1010", 2)); // // System.out.println("====十进制转其他进制"); // String c = Integer.toString(110, 2);//十进制转二进制 // String c2 = Integer.toString(120, 8);//十进制转八进制 // String c3 = Integer.toString(130, 16);//十进制转十六进制 // String c4 = Integer.toString(140, 10); // System.out.println(c); // System.out.println(c2); // System.out.println(c3); // System.out.println(c4); // int b = Integer.parseInt("013",8);//十进制 // String c = Integer.toString(b, 16); // System.out.println(c); // System.out.println(eto16("013")); // System.out.println(eto162("0xab897")); int ccc = 0B101010110; float c = 3.14_787_878_787f; System.out.println(ccc); String b = "1010111"; System.out.println("二进制转十六进制==="+eto165(b)); System.out.println("十六进制转二进制==="+eto163(eto165(b))); System.out.println("二进制转八进制==="+eto166(b)); System.out.println("八进制转二进制==="+eto162(eto166(b))); System.out.println("八进制转十六进制==="+eto16(eto166(b))); } //二进制转十六进制 public static String eto165(String b){ int bc = Integer.parseInt(b,2); //十进制----parseInt(进制数字,radix);//radix告诉进制数字是进制----转成,十进制 //Integer.parseInt(进制数字,radix)===将某一种进制转换成十进制 String c = Integer.toString(bc, 16); return c; } //二进制转八进制 public static String eto166(String b){ int bc = Integer.parseInt(b,2); //十进制----parseInt(进制数字,radix);//radix告诉进制数字是进制----转成,十进制 //Integer.parseInt(进制数字,radix)===将某一种进制转换成十进制 String c = Integer.toString(bc, 8); return c; } //八进制转十六进制 public static String eto16(String b){ int bc = Integer.parseInt(b,8);//十进制 String c = Integer.toString(bc, 16); return c; } //八进制转二进制 public static String eto162(String b){ int bc = Integer.parseInt(b,8);//十进制 String c = Integer.toString(bc, 2); return c; } //十六进制转二进制 public static String eto163(String b){ int bc = Integer.parseInt(b,16); //十进制----parseInt(进制数字,radix);//radix告诉进制数字是进制----转成,十进制 //Integer.parseInt(进制数字,radix)===将某一种进制转换成十进制 String c = Integer.toString(bc, 2); return c; } //十六进制转10进制 public static String eto164(String b){ int bc = Integer.parseInt(b,16);//十进制 return bc+""; } }