java字符类型定义_java定义的数据类型与转义字符

Java定义的数据类型

一、变量按照数据类型来分:

基本数据类型:

整型:byte \  short \  int  \long

浮点型:float  \  double

字符型:char

布尔型:boolean

引用数据类型:

类:class   (字符串)

接口:interface

数组:array

二、按照变量在类中声明的位置来分:

成员变量 vs 局部变量(此处省略,之后在面向对象会提到)

基本数据类型变量的使用

1.整数类型:byte、short、int、long

整型默认是int类型,声明long型常量后需要加上"l"或"L"

整数类型介绍:

(1)字节型:byte,占用存储空间为1字节=8bit位,有2的8次方一共256种情况,-128~127,一共256个长度(算上0).

代码:

classVariableTest1{

public static voidmain(String[] args){

//1.整型,byte(1字节=8bit)\short(2字节)\int(4字节)\long(8字节)

//(1)byte范围:-128~127

byte b1 = 12;

byte b2 = -128;

System.out.println(b1);

System.out.println(b2);

}

}

编译与运行:

41fbccb4c4d2380732190f80409c9911.png

若b2=128,再编译:128超出1字节范围

94797e804f5256d0bf22fd4d2594ac08.png

(2)short,占用存储空间为2字节=16bit位,有2的16次方种情况,-(2的15次方)~2的15次方-1,一共2的16次方个长度(算上0).

(3)int,占用存储空间为4字节=32bit位,有2的32次方种情况,-(2的31次方)~2的31次方-1,一共2的16次方个长度(算上0).

(2)long,占用存储空间为8字节=64bit位,有2的64次方种情况,-(2的63次方)~2的63次方-1,一共2的16次方个长度(算上0).

总代码:

class VariableTest1{

public static void main(String[] args){

//1.整型,byte(1字节=8bit)\short(2字节)\int(4字节)——常用\long(8字节)

//(1)byte范围:-128~127

byte b1 = 12;

byte b2 = -128;

//byte b2 = 128;//编译不通过

System.out.println(b1);

System.out.println(b2);

//(2)声明long型变量需要加上"l"或"L"

//(3)通常使用整型变量时,常用int型

short s1 = 128;

int i1 = 1234;

long l1 = 343L;

System.out.println(l1);

}

}

编译运行:

4e90d3a0eabd976e00be846dcfac6fc2.png

2.浮点型变量的使用(float \ double)—带小数点的

浮点型常用的两种表示形式:

十进制数形式:如:5.12 512.0f .512(必须有小数点)

科学计数法形式:如:5.12e2  512E2 100E-2(这里,e和E是一样的)

512E2等价于512*10^2

e2相当于小数点向右移动了2位,E-2相当于小数点向左移动了2位。

Java的浮点型常量默认为double型,声明float变量,须后加‘f’或‘F‘。

float:占4个字节,单精度,尾数精度可以达到7位有效数字;double占8个字节,双精度,精度比较高,是float的2倍。

d5aa22334e90afe0760d86d35a1e4209.png

3.字符型变量的使用

char:字节2位,取值范围0~65535,字符编码为Unicode字符集(万国码)

Unicode字符集支持ASCII编码(美国校准信息交换码)

Unicode中每个字符都对应一个十进制整数,从而可以使用多种方式赋值。

字符赋值:(至少得记住3个字符编码) 'A'-65  'a'-97  '0'-48

(1)字符赋值char   c1='A';  计算机只识别0和1  (A对应的是65)

(2)整数赋值char c2=65; c1=c2

大写字母转小写    大写+32=小写

(3)进制赋值:char c3='\u0041';通过十六进制数41在字符集中所对应的的字符赋值。

4.转义字符:

(1)为了在程序中输出单引号,需要用到转义字符。

class CharTest{

public static void main(String[] args){

char c='\''

System.out.println(c);

}

}

编译运行:

a1ec3781036451bfb599f38b0c9fd353.png

(2)转义字符

b566a23620d5a3d6541be40fca2b6026.png

5.布尔型

boolean:字长没有约定,取值范围只能是true或false,可描述真或假。

内存地址是分配到字节的,不是分配到字节的每一位的。

注意:Java中的Boolean类型不能参与算数运算。

基本数据类型变量间转换

引用数据类型(对象类型)

6.String:字符串(“”),字符编码为Unicode字符序列。

String类型变量的使用(引用数据类型-String):

代码:

/*

String类型变量的使用

1.String属于引用数据类型

2.声明String类型变量时,使用一对"",单引号会报错

3.String可以和8种基本数据类型做运算(包括布尔型的类型)

*/

class StringTest{

public static void main(String[] args){

String s1 = "Hello World";

System.out.println(s1);

String s2 = "a";

String s3 = "";

//char c = '';//编译不通过,字符里不能为空

//*****************************************

int number = 1001;

String numberStr = "学号:";

String info = numberStr + number;

boolean b1 = true;

String info1 = info + b1;//+ 连接

System.out.println(info1);

//是加法还是连接?

//练习1

char c = 'a';// c=97

int num = 10;

String str= "hello";

System.out.println(c+num+str);//107hello

System.out.println(c+str+num);//ahello10

System.out.println(c+(str+num));//ahello10

System.out.println((c+num)+str);//107hello

System.out.println(str+num+c);//hello10a

//练习2

System.out.println("* *");

System.out.println('*' +'\t'+ '*');//error int + int

System.out.println('*' +"\t"+ '*');//String +做连接

System.out.println('*' +'\t'+ "*");//error int +做连接

System.out.println('*' +('\t'+ "*"));

//*******************************************

//String str1 = 123;

String str1 = 123 + "";

System.out.println(str1);

//int num1 = str1;

//int num1 = (int)str1;//error

int num1 = Integer.parseInt(str1);

System.out.println(num1);

}

}

编译运行:

f81307706d719c4e9284b937374f9ac8.png

b5e53feacebe05ba3e5d2b4e2cc7b490.png

变量类型转换:

变量类型转换分为自动类型提升和强制变量转换。

1.自动类型提升:

代码:

/*

基本数据类型之间的运算规则:

前提:不包含boolean类型

1.自动类型提升

当容量小的数据类型与容量小的数据类型的变量做运算时,结果自动提升为容量大的数据类型。

byte-->short-->int-->long-->float-->double

特别的:当byte、char、short做运算,结果数据类型均为int类型。

byte、char、short-->int-->long-->float-->double

说明:此时的容量大小只的是数据范围的大小,不是占内存的大小

2.强制类型转换

*/

class AutoConvertTest{

public static void main(String[] args){

byte b1 = 2;//1个字节

int i1 = 129;//4个字节

int i2 = b1 + i1;//小的加大的用值范围大的接收

long l1 = b1 + i1;//右边是int,4字节(左边8字节)

float f = b1 + i1;//float 4个字节

//byte b2 = b1 + i1;//4个字节接收 int

System.out.println(i2);//131

System.out.println(l1);//131

System.out.println(f);//131.0

//**************************

//char:字节2位,取值范围0~65535

char c1 = 'a';

int i3 = 10;

int i4 = c1 + i3;

System.out.print(i4);//char与int-->int

short s2 = 10;

//short c2 = c1 + s2;//不兼容,编译不通过

byte b2 = 10;

//byte c3 = c1 + b2;//不兼容,编译不通过

//char c3 = c1 + b2;//不兼容,编译不通过

}

}

编译运行:

eacb6c62f1273b797c8506f7b8ab2547.png

2.强制变量转换

一般情况代码:

classForceConvertTest{

public static voidmain(String[] args){

double d1 = 12.9;

int i1 = (int)d1;//强制转换 截断操作

System.out.println(i1);

//没有精度损失

long l1 = 123;

short s2 = (short)l1;

System.out.println(s2);

int i2=128;

byte b= (byte)i2; 127

System.out.println(b);//-128 原因:二进制转换 10000000,最高位为1,1代表负。之后在进制转换会提到。

}

}

编译运行:

d4215240a565837c46a1671f54f9d0cd.png

两个特殊情况代码:

class ForceConvertTest{

public static void main(String[] args){

//1.编码情况

long l=123213;//没写l,int型

System.out.println(l);//没写l,没有报错(小范围->大范围-自动提升)

//long l1=213324232352423413;//超出int范围,运行提示过大的整数

//编译失败

//错误:不兼容的类型:从double转换到float可能会有损失

//float f1 = 12.3;

//System.out.println(f1);

//2.编码情况

//整型常量,默认为int型

//浮点型常量,默认为double型

byte b = 12;

//byte b1 = b + 1;//从int转换成byte可能会有损失

float f1 = b + 12.3;//不兼容(从double到float)

}

}

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值