边学边记——Java标识符,关键字,数据类型,常量与变量

发布于:2023-01-16 ⋅ 阅读:(822) ⋅ 点赞:(0)

目录

一.标识符

1.定义

2.命名

二.关键字

三.Java中的数据类型

三.常量

四.变量

定义

1.整形变量

(1).整型类型(4字节—包装类:Integer)

(2).长整型(long—8字节 —包装类:Long)

(3).byte类型(byte—1字节—包装类:Byte)

(4).短整型类型(short—2字节—包装类:Short)

2.浮点型变量

(1).float(float—4字节—包装类:Float)

(2).double(double—8字节—包装类:Double)

3.字符型变量(char—2字节—包装类:Character)

4.布尔型变量(boolean—包装类:Boolean)

5.类型转换

(1).小类型 -> 大类型——隐式转换

(2).大类型 -> 小类型——强制类型转换(存在精度丢失问题)

6.补充

(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除外)

eg1byte <=> 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);

eg2char <=> 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);

注意:若字符串中包含除了数字以外的字符,就会抛出异常。

以上就是全部内容,感谢观看,如有建议或想法,欢迎一起讨论学习~

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到