Java变换两个变量位置_二、 java中的变量与数据类型及类型转换

标识符:凡是可以自己命名的地方都叫标识符,如:类名、方法名、接口名。。。

1.标识符命名的规则:

由26个英文字母大小写,0-9,_或$组成,不遵守会报错。

不可以用数字开头。

不能使用关键字和保留字。

java中严格区分大小写,长度无限制。

标识符不能包含空格。

2.java中命名规范

包名:多单词组成所有的字母都小写:xxxyyyzz

类名、接口名:多单词组成时首单词小写,后面每个单词首字母大写:xxxYyyZzz

常量名:所有字母都大写,多单词每个单词用下划线连接:XXX_YYY_ZZ

最好是见名知意,不要总是用a,b,c。

3.变量

java的变量名开辟的内存空间,此空间必须有自己的名字和类型,例int a=1.开辟一个空间,名称为a,类型为整型。变量的作用域在一对{}之间有效。而且肯定有一个初始化值。

public classvariable{public static voidmain(String[] args){int myInt = 233;double myDouble = 3.14;

System.out.println(myInt);

System.out.println(myInt+myDouble);

}

}

我们在这里定义的两个变量仅在此花括号中有效,即作用域在此花括号中。

注意:与动态语言不同之处就是,在Java这样的静态语言里,声明变量的时候ixu要知道变量的数控类型,这样在编译时就能知道数据所占的存储空间的大小,这是静态语言的基本数据类型的优势,Java也是因为此优势,放弃了纯面向对象的设计。

java中8种基础数据类型

整型:byte,short,int,long。默认为int类型。

浮点型:float,double(默认为双精度)。

字符型:char只能表示一个字符(英文,中文,标点符号,'\t',‘\u1234’等):char a = 'ab'这样会报错,包含了两个字符。需要包含多个字符需要定义字符串str = "ab"。

布尔类型:boolean,只能取true或false,不能取null,也不能取0,1。

值得一提的是:

浮点型(小数):   都是不精确的

float:单精度浮点型  长度:4个字节,

科学计数法表示后,小数点后7~8位,

数字常数如果想要表示是float类型,后面加F或f。

387f93e36f82eb4d92e8045209df5219.png

double:双精度浮点型 长度:8个字节   默认类型,

科学计数法表示后,小数点后15~16位,

如果是double类型,数字后面可加可不加D或d。

72cf217d77a2d2e006a5a44608501b0f.png

计算机显示是没有小数点的,为了实现小数点,在计算机底层使用的是科学记数法记录的,整数部分*(10**n),因为整数部分的记录长度有限,所以浮点型的数据都是有限长度的,计算出来的小数的值就不精确。float实际精度只有小数点后7-8位左右,double的精度高一点可以到15-16位。

字符型     存储单个(有且只有一个)字符。且字符可以是中文,也可以是英文字符,因为Java支持Unicode编码。

占的内存大小是:2个字节,统一使用Unicode编码,每一个字符、标点符号等都有唯一的一个编码值;

char字符的三种类型:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

classTestChar{public static voidmain(String[] args){//1.字符表现形式

int a = (int)'a';

System.out.println(a);//97

int b = (int)'丁';

System.out.println(b);//19969//int c = (int)'丁j';//System.out.println(c);//只能放一个字符//2. 转义字符类型的表示

int c = (int)'\n';

System.out.println(c);//10//3. 使用字符的Unicode编码值

char d = (char)'\u4e01';

System.out.println(d);//丁

}

}

char

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

classTestChar{public static voidmain(String[] args){//char a = '';//不能这样定义一个空字符,编译会出错//System.out.println(a);

int b = (int)' ';//此处是一个空格,''里面必须有东西

System.out.println(b);//32

int c = '\n';//存储范围小的常量值和变量值可以直接赋值给存储范围大的变量

System.out.println(c);//10

char d = (int)'\u4E01';

System.out.println(d);//丁

int e = (char)'\u4E01';

System.out.println(e);//19969

}

}

charPlus

布尔型:

boolean:

只有两个值:true,false。

在底层实现bool就是0,1,在python中ture和false可以当作0,1来使用,但是Java里是不可以的。

8649884.html

classjava_type{public static voidmain(String[] args){//byte类型,整型默认值都为0

byte myByte = 100;

System.out.println(myByte);//short类型

short myShort = 233;

System.out.println(myShort);//int类型

int myInt = 23333;

System.out.println(myInt);//long类型,默认值0L

long myLong = 12345678910111213L;

System.out.println(myLong);//float类型,默认值是 0.0f

float myFloat = 234.5f;

System.out.println(myFloat);//double类型,默认值是 0.0d

double myDouble = 3.14;

System.out.println(myDouble);//boolean类型,默认值是 false

boolean myBoolean = true;

System.out.println(myBoolean);//char类型

char myChar= 'J';

System.out.println(myChar);

}

}

自动类型转换

低 ------------------------------------>高byte,short,char—> int —> long—> float —> double

(1)存储范围小的常量值和变量值可以直接赋值给存储范围大的变量

例如:

byte和byte-->int

short和short-->int

char和char-->int

byte和double-->double

(2)byte,short,char之间不能运算,一运算(加减乘除等),最小提升为int

byte f = 2;

char g = 'a';

//f = f + g;//损失精度,char与byte相加的值数据类型提升为int,byte盛放不了,所以会报损失精度的编译错误。

f += g;//自动强制类型转换了

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

(3)boolean不与任何转换

(4)所有类型和String一旦拼接“+”,结果都是String

强制类型转换

容量大转换为容量小的,要使用强制类型转换符(),会导致精度损失,boolean不可以强制转换成任何类型,+=也实现了自动完成强制类型转换。

比如将int类型12345转换为byte类型:

int 12345转换为二进制为110000 00111001,byte类型为8位二进制数,会截断110000 00111001取00111001的值,00111001转化为10进制结果为57。

classexchange{public static voidmain(String[] args){int myInt = 12345;byte myByte = (byte)myInt;

System.out.println(myByte);char c1='a';//定义一个char类型

int i1 = c1;//char自动类型转换为int

System.out.println("char自动类型转换为int后的值等于"+i1);char c2 = 'A';//定义一个char类型

int i2 = c2+1;//char 类型和 int 类型计算

System.out.println("char类型和int计算后的值等于"+i2);

}

}

运行结果为:

root@debian:/home/jeff/java_coding/day002# java exchange57char自动类型转换为int后的值等于97

char类型和int计算后的值等于66

算数

classsuanshu{public static voidmain(String[] args){int i1 = 12 % 5;int i2 = -12 % 5;int i3 = 12 % (-5);int i4 = -12 % (-5);

System.out.println(i1);2

System.out.println(i2);-2

System.out.println(i3);2

System.out.println(i4);-2

}

}

可以的出结论,取模的结果与被取模数的符号有关。

classsuanshu{public static voidmain(String[] args){//++//a++,先计算再+1

int int1 = 10;int int2 = int1++;

System.out.println(int1);11

System.out.println(int2);10//++a,先+1。再赋值

int int3 = 10;int int4 = ++int3;

System.out.println(int3);11

System.out.println(int4);11

}

}

其他算数后面用到再解释,与我们一般使用并没有什么分别。

java中的字符类型与字符串类型的差别(单双引号问题)。

在java中单引号中的是字符类型,即char,而双引号中则为字符串类型,即string。

classcharString{public static voidmain(String[] args){

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

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

}

}

单引号相加时为char类型相加,结果会提升为int类型,即将对应的ascii码转化为对应的数值再相加,结果是一个int类型的数值。而双引号相加的结果是字符串的相加,所以结果是一个字符串类型。

输出结果:

root@debian:/home/jeff/java_coding/day002# java charString93

* *

注意:

1.  Java的标识符可以使用$符号,一般$都使用在内部类的变量名中,我们自己的定义标识符一般不要使用;

2.  数字常数如果想要表示是long类型的,后面加L或l(小写L);表示是float类型,后面加F或f;

3.  字符型存储单个字符(0个字符也不可以,即不可以是'')。且字符可以是中文,也可以是英文字符,因为Java支持Unicode编码。占的内存大小是:2个字节。还可以是转义字符和'\uxxxx'Unicode字符;

6. boolean有且只有两个值,不能是1,0,不可相互转换;

7. 打印显示0x或者0b等结果会自动转换成10进制的结果;

8. 字符串String不是基本数据类型;

9. 变量三要素:变量名,变量值,变量数据类型;

10. 标识符的命名规则和标识符的命名规范见下面;

11. 计算机底层存储的都是补码,正数:原码、反码、补码都一样,负数的原码转反码,除符号位全部取反,反码+1=补码;

12. 局部变量只有可能有一种修饰符就是final;

13. 局部变量需要先声明再赋值最后使用,否则会报错;

14. 修改变量时,变量的值已经定义过了,再加上数据类型会报错,重复定义;

15. 注意使用变量的作用域,超出作用域的括号就需要重新定义使用了。

附:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 (1)关键字:在Java中被赋予的特定含义的单词。2 基本数据类型相关(8个):byte、short、int、long、float、double、char、boolean

3 流程控制语句相关(10个):if、else、switch、case、default、break、for、while、do、continue

4 判断某个对象是否是某种类型的实例对象运算符:instanceof

5 定义类:class

6 创建类的对象:new

7 包相关:package、import

8 权限修饰符:public、protected、(缺省)、private

9 继承类:extends

10 定义接口:interface

11 实现接口:implements

12 当前对象:this

13 父类引用:super

14 表示无返回值:void

15 结束方法:return

16 定义枚举:enum

17 其他修饰符:abstract、static、final、native

18 异常处理:try、catch、finally、throws、throw

19 多线程同步和安全:synchronized、volatile

20 和IO序列化相关:transient

21 和单元测试相关:assert

22 其他:strictfp[strictfp 关键字可应用于类、接口或方法。如果你想让你的浮点运算更加精确,严格遵守FP-strict的限制,符合IEEE-754规范,而且不会因为不同的硬件平台所执行的结果不一致的话,可以用关键字strictfp.]23 (2)保留字:在Java中注册但还未使用24 goto、const

25 (3)特殊值:true、false、null

Java里的关键字、保留字和特殊值

局部变量和成员变量的区别?

(1)声明的位置不同

局部变量:在方法中

成员变量:在类中方法外

(2)变量的值在内存中存储的位置不同

局部变量:在栈中

成员变量:在堆中,而且每个对象存储一份

(3)初始值的获取方式不同

局部变量:必须手动初始化

成员变量:如果没有手动初始化,或手动赋值,那么一旦创建对象它就有默认值

(4)生命周期:从内存中分配到内存的回收

局部变量:代码执行到声明该局部变量的位置开始,到出了它的作用域的}结束

成员变量:从new对象开始,到该对象被垃圾回收

(5)作用域:

局部变量:从声明处开始到所属的}结束

成员变量:在本类中

在其他类中,必须通过对象访问,而且还有看是否可见

(6)修饰符

局部变量:如果要有修饰符,只能有一个final

成员变量:修饰符可以有很多....

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值