当前位置: 主页 > JAVA语言

java自动类型转化顺序-java自动类型转换规则

发布时间:2023-03-30 11:13   浏览次数:次   作者:佚名

1、关键字

被Java语言赋予特定含义的单词被称为关键字

关键字都是小写的

在Java开发工具中,针对关键字有特殊颜色的标记

2、java语言基础-LMLPHP

2、标识符

Java标识符命名规则

·标识符是由,数字,字母,下划线和美元符号构成,其他符号不可以

·必须以字母、下划线和美元符号开头,不能以数字开头

关键字不能作为标识符

标识符区分大小写,理论上没有长度限制

2、java语言基础-LMLPHP

3、字面值

什么是字面值?

·字面值就是可以直接看到是多少的数据

字面值的分类

·字符串,用双引号括起来的内容,例如:"monkey"

·整数,所有整数,例如:1024

·小数,所有小数,例如:3.14

·字符,用单引号括起来的内容,里面只能放单个数字,单个字母或单个符号,例如:‘a'

·布尔,只有true和false

java自动类型转换规则_java字节数组转化float_java自动类型转化顺序

public class Literal_value{
public static void main(String[] args){
System.out.println("HeiHei!");
System.out.println(2048);
System.out.println(0.11);
System.out.println('A');
System.out.println(false);
}
}

4、变量

什么是变量?

·在程序执行的过程中java自动类型转化顺序,在某个范围内其值可以发生改变的量

Java中如何定义变量(以下两种均可)

1.数据类型变量名=变量值;

2.数据类型变量名;

变量名=变量值;

为什么定义变量?

变量其实就是内存中的一块空间,这块空间有“类型”,“名字”,“值”。可以用来不断的存放同一类型的常量,并可以重复使用。

public class variable{
public static void main(String[] args){
int a=10;
System.out.println(a);
a=20;
System.out.println(a); //int a =20; error 同一个域中 不能对变量再次重新声明 int b,c,d=15; //error 只给d赋值了 b和c没有赋值
System.out.println(d); }
}

5、java数据类型

整数型

·byte占一个字节-128到127(字节型)

·short 占两个字节-215~215-1-32768~32767(短整型)

·int占四个字节-231~231-1-2147483648~2147483648(整型)

·long 占八个字节-2063-263-1(长整型)

public class data_type{
public static void main(String[] args){
int a = 10;
long b = 1000;
//程序将2147483648看做是int类型,因为2147483648已经超出了int类型的取值范围,所以会报错
//正确的方法是在long类型赋值的时候,需要在后面加上‘L’
//程序会默认的把整型的字面值当做int类型
long ab = 2147483648L; int c = 999;
//从容量大的向容量小的类型转换时,需要强制类型转换
//这么做可能会损失精度,所以不建议使用
int d = (int)c; //需要注意,给byte类型赋值时,需要注意取值范围
//byte d=128;error
byte e=127;
}
}

浮点型

java自动类型转换规则_java自动类型转化顺序_java字节数组转化float

·float 占四个字节-3.403E38~3.403E38单精度

·double占八个字节-1.798E308~1.798E308双精度

public class floats{
public static void main(String[] args){
double d = 3.14;
float f = 1.2F; //因为默认为double类型,因超过double限制,所以需要加F
float f1 = (float)d; //强制转换为float型
float f2 = (float)5.1; //强制转换为float型
}
}

字符型

·char占两个字节0~65535

public class chars{
public static void main(String[] args){
char c1 = 'a';
char c2 = '小';
//char c3 = 'ab'; error 'ab'这个叫做字符串 char c4 = 97;
char c5 = 65;
char c6 = 48; System.out.println(c4); // ASCII码中97代表a
System.out.println(c5); // ASCII码中97代表A
System.out.println(c6); // ASCII码中97代表0 char a1 = '\''; // 转义字符 \
char a2 = '\t'; // 制表符
char a3 = '\n'; // 换行付 char a4 = 'a';
char a5 = 'b';
char a6 = 'c'; System.out.println(a1);
System.out.println(a2);
System.out.println(a4);
System.out.println(a3);
System.out.println(a5);
System.out.println(a6); }
}

布尔型

·boolean

public class bool{
public static void main(String[] args){
boolean flag = true;
if (flag){
System.out.println("True");
}else{
System.out.println("Flase");
}
}
}

6、基础数据类型的一些问题和总结

关于基本数据类型转换规则:

1、8种基本数据类型除boolean类型之外都可以相互转换。

2、小容量向大容量转换叫做自动类型转换:

byte

3、byte,short,char做混合运算的时候,各自都先转换成int在做运算

4、大容量向小容量转换是强制类型转换,需要加强制转换符。编译虽然通过,运行期可能损失精度。谨慎使用。

5、如果整数没有超出byte,ahort,char的取值范围,可以直接将这个整数赋值给byte,short,char

6、多种数据类型做混合运算,先转换成容量最大的那种再做运算

public class data_byte{
public static void main(String[] args){
byte a1 = 4;
byte a2 = 6;
//byte a3 = a1 + a2; error 不兼容类型 ,程序在运行时,会将b1和b2转换成int类型,然后再做加法运算
byte a3 = (byte)(a1 + a2);
System.out.println(a3); // byte a4 = 10;
short a5 = 20;
int a6 = a4 + a5;
System.out.println(a6); // char a7= 'a'; // ASCII中a为97
int a8 = 100;
int a9 = a7 + a8; //
System.out.println(a9);
}
}

java自动类型转化顺序_java字节数组转化float_java自动类型转换规则

7、算术运算符

2、java语言基础-LMLPHP

自增或自减运算符放在变量的前后有什么区别?

单独使用:没有区别

public class math{
public static void main(String[] args){
int a = 10;
++a; // a = a + 1
System.out.println(a); // int b = 6;
b++; // b = b + 1
System.out.print(b); //
System.out.print('\n'); int c = 8;
--c;
System.out.println(c); // int d = 11;
d--;
System.out.println(d); // }
}

参与运算时:

如果放在变量的前面,则先进行自增或自减,然后再参与运算

如果放在变量的后面,则先参与运算,然后再进行自增或自减

public class math{
public static void main(String[] args){ int a = 6;
int a1 = ++a; a = a +1 = 7,a1 = a = 7
System.out.println("a1 = " + a1); //
System.out.println("a = " + a); // int b = 9;
int b1 = b++; b1 = b =9, b = b +1 =10
System.out.println("b1 = " + b1); //
System.out.println("b = " + b); // int c = 10;
int c1 = ++c; // c = 11,c1=c=11
int c2 = c++; // c2 = c = 11,c = c +1 == 12
System.out.println("c1 = " + c1); //
System.out.println("c2 = " + c2); //
System.out.println("c = " + c); // int d = 10;
int d1 = d++; // d1 = d =10, d = d + 1 =11
int d2 = ++d; // d = d + 1 = 12, d2 = d =12
System.out.println("d1 = " + d1); //
System.out.println("d2 = " + d2); //
System.out.println("d = " + d); //
}
}

小练习

练习1:请问下面程序打印结果是什么?

2、java语言基础-LMLPHP

public class math{
public static void main(String[] args){ int a = 10;
int b = 10;
int c = 10; a = b++;
c = --a;
b = ++a;
a = c--; System.out.println("a = " + a); //
System.out.println("b = " + b); //
System.out.println("c = " + c); // }
}

练习2:请问下面程序打印结果是什么?

2、java语言基础-LMLPHP

public class math{
public static void main(String[] args){ int x = 4;
int y = (x++)+(++x)+(x*10); System.out.println("x = " + x); //
System.out.println("y = " + y); // }
}

练习3:下面程序有没有问题?

2、java语言基础-LMLPHP

public class math{
public static void main(String[] args){ byte b = 10;
// b = b +1 ; error 原因:由int转为byte属于从大向小转换,应添加强制转换符
b = (byte)(b + 1); System.out.println("b = " + b); // }
}

java字节数组转化float_java自动类型转化顺序_java自动类型转换规则

练习1:请问下面程序打印结果是什么?

2、java语言基础-LMLPHP

public class math{
public static void main(String[] args){ int i = 10;
i = i++; System.out.println("i = " + i); // }
}

8、赋值运算符

+=把左边和右边做加法,然后赋值给左边

-=把左边和右边做减法,然后赋值给左边

*=把左边和右边做乘法,然后赋值给左边

/=把左边和右边做除法,然后赋值给左边

%=把左边和右边做取余,然后赋值给左边

public class math{
public static void main(String[] args){
int a =10;
a += 10;
System.out.println(a); // a -= 5;
System.out.println(a); // a *= 3;
System.out.println(a); // a /= 15;
System.out.println(a); // a %= 2;
System.out.println(a); // byte b =10;
//b = b + 10; error 报错
b += 10; //说明扩展运算符在进行运算时,不会改变其类型,但会损失精度 }
}

9、关系运算符

==判断是否相等(基本数据类型)

!= 不等于

< 大于

>=大于等于

< 小于

false

^ 逻辑异或两边只要是不一致就是true

&&短路与用法和:一样。

java自动类型转换规则_java自动类型转化顺序_java字节数组转化float

|| 短路或用法和|一样

public class math{
public static void main(String[] args){
System.out.println(5>3 & 3<5); //true
System.out.println(7<9 | 7>9); //true
System.out.println(!true); //false
System.out.println(4>2 ^ 2>4); //true int a = 10;
int b = 10;
System.out.println(a>b && a++>b);//如果前面是false的话,后面表达式不会执行,如果前面是true的话,后面表达式会执行
System.out.println(a); // int c =10;
int d =10;
System.out.println(c==d || c++>=d);//如果前面是true的话,后面表达式不会执行,如果前面是false的话,后面表达式会执行
System.out.println(c); //
}
}

11、字符串链接运算符

1.如果两边都是数值型,则进行加法运算

2.如果两边任意一边是字符串型,则进行字符串连接运算

public class math{
public static void main(String[] args){
System.out.println("数值为:" + 3.14); // 数值为:3,。14
int a = 10;
int b = 20;
System.out.println("a + b = " + (a+b)); // a + b =30 System.out.println(a + "+" + b + "=" + (a+b)); // 10 + 20 = 30
}
}

12、三元运算符

boolean装达式?表达式1:表达式2;

如果boolean表达式的值是truejava自动类型转化顺序,则返回表达式1,如果是falae,则返回表达式2

public class math{
public static void main(String[] args){
int a = 10;
int b = 11;
int c = (a>b) ? a : b;
System.out.println(c);
}
}

小练习:

用java代码查找出下面三个数中的最大值,并打印出来!

2、java语言基础-LMLPHP

public class lianxi{
public static void main(String[] args){
int a = 10;
int b = 20;
int c = 30; int d = (a>b) ? a : b;
int max = (d>c) ? d : c;
System.out.println(max); }
}

13、位运算符

& 位与

| 位或

^ 位异或

~ 取反

>> 向右移

>>>无符号右移