目录
(4).短整型类型(short—2字节—包装类:Short)
(1).float(float—4字节—包装类:Float)
(2).double(double—8字节—包装类:Double)
3.字符型变量(char—2字节—包装类:Character)
(2).大类型 -> 小类型——强制类型转换(存在精度丢失问题)
(1).关于4字节以下的数据类型的保存问题(boolean除外)
(2).关于String <->int 的相互转换(这是俩完全不同的类型,不是强转)
一.标识符
1.定义
就是给变量,方法,类 起名字。
标识符中可以包含:
字母,数字以及下划线和$符号(不推荐使用$,一般编译后标注内部类)。
注意:标识符不能以数字开头,也不能是关键字,且严格区分大小写。
2.命名
- 类名:采用大驼峰命名法——每个单词的首字母大写。
- 方法和属性名:采用小驼峰命名法——第一个单词全小写,从第二个单词(若存在)开始首字母大写。
二.关键字
abstract |
assert |
boolean |
break |
byte |
case |
catch |
char |
class |
const |
continue |
default |
do |
double |
else |
enum |
extends |
final |
finally |
float |
for |
goto |
if |
implements |
import |
instanceof |
int |
interface |
long |
native |
new |
package |
private |
protected |
public |
return |
strictfp |
short |
static |
super |
switch |
synchronized |
this |
throw |
throws |
transient |
try |
void |
volatile |
while |
三.Java中的数据类型
分为两类:第一类是8种基本数据类型,第二类是引用数据类型。
8大基本数据类型都有相关的包装类(把基本数据类型转为引用数据类型(类))。
基本数据类型 | byte | short | int | long | float | double | char | boolean |
对应的包装类 | Byte | Short | Integer | Long | Float | Double | Character | Boolean |
- int 和 char 的包装类比较特殊,剩余的包装类都是将首字母改为大写即可。
注意:在Java中所有数据类型都有默认值(一定是类中定义的属性才具备默认值,不是方法中的局部变量)。
三.常量
程序运行期间,固定不变的量称为常量。
字面常量:直接写出来的值都属于常量(值是一个确定的值,无法修改)。
eg:直接写出来的10,只能表示他的数值是10,是不能修改的,不可能是5,11,20。
//字符串字面常量
System.out.println("hello world");
//整型字面常量 默认是int型
System.out.println(10);
//浮点型字面常量 默认是double型
System.out.println(1.2);
//字符型字面常量 默认是字符型
System.out.println('a');
//布尔型字面常量
System.out.println(true);
四.变量
定义
在程序运行过程中,内容可以改变的量称为变量。
强类型语言:定义一个变量,必须同时规定该变量的数据类型是啥,值可以改,但是必须在该数据类型的范围内更改(C/C++/Java)。
定义一个变量的语法为:
数据类型 变量名称 = 初始值;
int a=10;
double b=1.2;
char c='a';
boolean d=true;//真就是true 假就是false 不可以用1和0代替真假
int x=1,y=2,z=3;//在一行中也可以定义多个相同数据类型的变量。
注意:
- 在Java的布尔类型(blooean)中 ,真就是true,假就是false,不可以像C语言一样用1和0代替真假。
- 在一行中也可以定义多个相同数据类型的变量。
1.整形变量
(1).整型类型(4字节—包装类:Integer)
- 方式1:定义时给出初始值。
- 方式2:定义时不给出初始值,在使用前赋值。
//方式1:定义时给出初始值
int a=10;
//方式2:定义时不给出初始值,在使用前赋值
int b;
b=20;
注意:只有在类中定义的变量才有默认值,局部变量(在方法中定义的变量都属于局部变量)没有默认值,所以局部变量必须赋值后再使用。
eg:
- 在类中定义的整形变量a是有默认值的,默认值为0。
- 在主方法中定义的a是没有默认值的,这样就是局部变量,未赋值直接使用会报错。
a.整形变量的保存范围
有两个常量,分别表示整形的最大值和最小值:
- 最大值为Integer.MAX_VAULE( Integer 是整形 int 的包装类)
- 最小值为Integer.MIN_VAULE
eg:
b.如果超出范围会怎么样?
第一种情况:赋值时超出范围——更换数据类型。
eg:将 int 更换为 long 。
第二种情况:计算时超出范围——数据溢出问题(精度丢失问题)。
eg:
注意:在Java中,无论是什么操作系统,什么硬件,int 统一都是4字节,默认值都是0。
(2).长整型(long—8字节 —包装类:Long)
一般来说,由于数字字面量默认是int,为了区分int字面量还是long字面量,一般使用整数字面量赋值给long类型时,加上l或者L作为结尾(一般用L,方便观看)。
(3).byte类型(byte—1字节—包装类:Byte)
在进行网络编程和IO流操作的时,操作的基本单位是byte。
(4).短整型类型(short—2字节—包装类:Short)
较少使用。
2.浮点型变量
(1).float(float—4字节—包装类:Float)
浮点数字面量默认为double类型,若想要表示float单精度字面量,在结尾加F/f。
(2).double(double—8字节—包装类:Double)
偏差问题:C和Java内存布局都采用IEEE 754标准,是尝试使用整数来模拟小数,因此在小数部分有一定的偏差。
- float -> 一般只关注小数点6位之内的数。
- double -> 一般只关注小数点12位以内的小数(保证正确)。
eg:
3.字符型变量(char—2字节—包装类:Character)
使用' '(单引号)的字面量称为字符字面量,使用char类型来保存。
在java中,char采用Unicode编码,16进制编码(16bit),2个字节,支持地球上所有语言,只要是char数据类型,无论保存的是啥语言字符,统一都是2字节(C默认ASCII字符集)。
4.布尔型变量(boolean—包装类:Boolean)
只有两个值,true或者false,默认值为flase。
注意:真就是true,假就是false,不存在1表示true,0表示false。
5.类型转换
(1).小类型 -> 大类型——隐式转换
- 小类型的变量赋值给大类型变量,编译器自动提升小类型的变量类型。
- 当小数据类型和大数据类型进行数学运算时,也会进行类型的隐式提升。
注意:int + long => long + long = long
eg:
long a=Integer.MAX_VALUE+1;//这样是两个int型计算后再赋给long类型
System.out.println(a);
long b=Integer.MAX_VALUE+1L;//这样才是int和long类型相加 实现隐式转换
System.out.println(b);
(2).大类型 -> 小类型——强制类型转换(存在精度丢失问题)
- 有关系的类型之间,大类型转为小类型需要强转,但是会丢失精度。
- 毫无关系的类型之间,彻底不能转换。
eg:
double a=2.5;
int b=(int)a;
System.out.println(b);
6.补充
(1).关于4字节以下的数据类型的保存问题(boolean除外)
eg1:byte <=> int 之间的转换
a.当整型字面量赋值给byte类型的时候,若字面量值在byte的范围内,可以直接赋值,不需要强转(存储的时候会将 byte 转为 int 存储)。
结论:在Java内部保存数据类型的时候,都是以4字节为基础保存的,将小于4字节的数据类型先默认为整型然后保存。
b.当byte变量赋值给byte变量时需要强转。
byte a=10;
byte b=20;
//若整型字面量的运算和赋值 可以直接给byte变量 编译器会自动校验值是否是byte的范围内的值
byte c=10+20;
//若byte变量(编译器在编译时 无法确定变量是否会超出byte的范围 保存的时候都时int)之间的运算 不管是否在byte的范围内都需要强转
//错误写法:byte d=a+b;
byte d=(byte)(a+b);
System.out.println(c);
System.out.println(d);
eg2:char <=> int 之间的相互转换
a.char -> int 直接隐式转换
字符在存储时,也是按整数存储的(存在对应关系,每个不同的字符按照一定的规则转为整数,这种规则就称为“编码”)。
//小类型 -> 大类型
char a='a';
int b=a;
System.out.println(b);
b.int -> char 强制类型转换
//大类型 -> 小类型
char c=(char)99;
System.out.println(c);
(2).关于String <->int 的相互转换(这是俩完全不同的类型,不是强转)
a. int -> String
在Java中任意的字符串和任意其他类型进行+,都会将其他类型转为字符串,然后进行字符串的拼接操作。
eg:
int a=10;
int b=20;
String c="计算结果 = " + (a + b);
方式1:int+任意字符串(包括 "" )都会转为字符串String。
eg:
System.out.println(c);
String c=30+"";
System.out.println(c + 10);
方式2:使用String类的valueOf方法(推荐使用,转换更加清晰)。
eg:
int d=100;
String e= String.valueOf(d);
System.out.println(e+10);
b.String->int(有风险,类型转换异常,String有可能包含非整型)
必须是数字字符串(纯数字组成的字符串),可以转为int ,调用Integer中的 parseInt 方法。
eg:
//数字型字符串
String a="12345";
int b=Integer.parsetInt(a);
System.out.println(b+1);
注意:若字符串中包含除了数字以外的字符,就会抛出异常。
以上就是全部内容,感谢观看,如有建议或想法,欢迎一起讨论学习~