Java笔记2(关键字,数据类型,类型转换,变量)
注释、标识符、关键字
注释
注释不会执行,用来解释代码;书写注释是非常好的习惯
-
单行注释:用‘//注释'来编写
-
多行注释:用'/* 注释*/'来编写,可以注释一段文字
-
文档注释
标识符和关键字
-
Java所有的组成部分都需要名字。类名、变量名以及方法名都被成为标识符。
-
标识符注意点
-
所有的标识符都应该以字母,美元符或者下划线开始
-
首字母之后可以是字母,美元符,下划线以及数字的任何字符组合
-
不能使用关键字作为变量名或者方法名
-
标识符是大小写敏感的
-
可以使用中文,但是不建议使用,要使用英文来命名
-
数据类型
-
语言类型:
-
强类型语言:要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用。(好处:安全性高;坏处:处理速度慢)
-
弱类型语言:要求变量的使用不必严格符合规定。
-
-
Java的数据类型:
-
基本类型
-
布尔类型
boolean:只有true和false两个取值。
-
字符
char:16位,存储Unicode码,用单引号赋值。
-
小数(浮点数)
float:32位,数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F。
double:64位,数据范围在4.9e-324~1.8e308,赋值时可以加d或D也可以不加。 -
整数
byte:8位,最大存储数据量是255,存放的数据范围是-128~127之间。
short:16位,最大数据存储量是65536,数据范围是-32768~32767之间。
int:32位,最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1。
long:64位,最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的
-
-
引用类型
-
类
-
接口
-
数组
-
-
数据类型拓展及面试题
-
整数拓展:进制分为二进制0b、十进制、八进制0、十六进制0x
public class demo01 {
public static void main(String[] args) {
String teacher = "guojian";
int i=10;
int i2=010;
int i3=0x10;
System.out.println(i);
System.out.println(i2);
System.out.println(i3);
}
} -
浮点数拓展:浮点数的表现的字长是有限的,所以表现出来的数字都是离散的,因此存在舍入误差,只能是大约相同,即接近但是不等于;在比较时最好完全使用浮点数进行比较(BigDecimal,数学工具类)
-
字符拓展:所有的字符本质还是数字;Unicode编码表范围是0-65536,如97代表a
char c1='a';
char c2='中';
System.out.println(c1);
System.out.println(c2);
System.out.println((int)c1);
System.out.println((int)c2); -
关于Java中的对象比较要从对象的内存来进行分析
类型转换
-
由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换;
-
运算中,不同类型的数据先转化为同一类型,然后进行运算。
由低到高:
byte,short,char——>int——>long——>float——>double -
强制类型转换:(类型)变量名 由高到低
-
自动类型转换:由低到高
-
注意点:
-
不能对布尔值进行转换
-
不能把对象类型转换为不相干的类型
-
在把高容量转换到低容量的时候,需要强制转换
-
转换的时候可能存在内存溢出,或者精度的问题
-
public class demo03 {
public static void main(String[] args) {
int money=10_0000_0000;//jdk新特性,数字之间可以用下划线分割
int years=20;
int total=money*years;//出现负数是因为计算的时候发生了溢出
long total1=money*years;//仍然是负数,是因为这两个数的类型是int,转换之前已经存在问题
long total2=((long)money)*years;//先把一个数转换成long
System.out.println(total);
System.out.println(total1);
System.out.println(total2);
}
}
变量
-
变量就是可以变换的量(内存位置是确定的,存储的东西是不确定的),Java是强类型的语言,每个变量都必须声明其类型.
-
Java变量;是程序中的最基本的存储单元,其要素包括变量名,变量类型和作用域.
type varname [=value][{,varname[=value]}];
//数据类型 变量名=值;可以用逗号隔开来声明多个同类型变量. -
注意事项:
-
每个变量都有类型,类型可以是基本类型,也可以是引用类型\
-
变量名必须是合法的标识符
-
变量声明是一条完整的语句,因此每一个声明都必须以分号结束
-
变量类型也可以是自己所写的类
-
变量作用域
-
类变量:在类里面,声明时比实例变量多一个static,随类的出现和消失而出现和消失
-
实例变量:从属于对象,可以不用初始化值,此时引用会变成默认值(0,0.0,false,除了基本类型其余的默认值都是null)
-
局部变量:在方法里面,声明周期在大括号里,必须声明和初始化值
常量
-
常量(Constant):初始化后不能再改值,是不会变动的值
-
常量可以理解为一种特殊的变量,它的值被设定后,在程序运行的过程中不允许被改变.
final 常量名=值;
final double PI=3.14;
static final double PI=3.14;
final static double PI=3.14;//修饰符不存在先后顺序 -
常量名一般使用大写字符
变量的命名规范
-
所有的变量,方法,类名:见名知意
-
类成员变量:首字母小写和驼峰原则:monthSalary
-
局部变量:首字母小写和驼峰原则
-
常量:大写字母和下划线:MAX VALUE
-
类名:首字母大写和驼峰原则:Man, GoodMan
-
方法名:首字母小写和驼峰原则:run0.runRun0