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+"";
}
}