变量及类型
在Java中的数据类型可以分为两类:基本数据类型和引用数据类型
其中8种基本数据类型为:byte,short,int,long,float,double,char,boolean
引用数据类型:数组、类、接口
变量的命名
硬性指标:
- 一个变量名只能包含数字、字母、下划线
- 变量名不能以数字开头
- 变量名对于大小写是敏感的
注:在语法上允许使用$命名变量,但是不建议。
软性指标:
- 变量名要做到见名知意;
- 变量名尽量不要使用拼音;
- 变量名的词性尽量使用名词;
- 变量的命名推荐使用小驼峰命名法。
驼峰式命名法:
小驼峰命名法:变量一般用小驼峰法标识。除第一个单词之外,其他单词首字母是大写。例如:studentName
大驼峰命名法:常用于类名、函数名、属性、命名空间。每一个单词的首字母都是用大写。例如:MaxValue
数据类型
字节类型(byte)
字节类型表示的也是整数,但是只占一个字节,表示的范围是==(-128—> 127)==
byte value=0;
System.out.println(value);
整型
在Java中,整型没有64位或者32位的概念之分,都是4个字节,这也就能够保证Java的安全性,可以跨平台。
整型可以分为短整型(short),整型(int),长整型(long),用来存储不同大小的整数。
//整型变量的定义
short num1=10;
int num2=20;
long num3=100L;
一般的,在初始化long类型的变量时要在变量值后面加上一个L,用来标识该变量是一个long类型的变量。
在Java中可以通过包装类的成员变量来查看数据的取值范围。
// 查看int类型的数据范围
System.out.println(Integer.MAX_VALUE);//最大值
System.out.println(Integer.MIN_VALUE);//最小值
//查看long类型的数据范围
System.out.println(Long.MAX_VALUE);
System.out.println(Long.MIN_VALUE);
浮点型
- 单精度浮点型变量(float):4字节
float num=12.3f;
System.out.println(num);
单精度浮点型在进行初始化时,要==在数字后面加上f(F)==用来标识float类型。
- 双精度浮点型变量(double):8字节
Java中的double虽然也是8个字节,但是浮点数的内存布局和整数是不一样的,不能使用2^n的形式来表示数据范围。
double num=1.1;
System.out.println(num);
== 注:由于float表示的数据精度范围小,一般在工程上用浮点数都会优先考虑使用double==
字符型
char ch='A';
char ch2='呵';//使用一个字符表示一个汉字
System.out.println(ch);
System.out.println(ch2);
在计算机中字符的本质也是整数,在C语言中使用ASCII表示字符,Java中使用Unicode来表示字符。
一个字符占用两个字节,表示的字符种类也更多,包括中文。
在执行javac时,经常会出现如下情况的错误:
当遇到这种情况时,解决方法是:加上-encoding utf-8
javac -encoding utf-8 Test.java
布尔类型
boolean类型的变量只有两种取值,true和false,true表示真,false表示假。
在C语言中1表示真,0表示假,但在Java中不能这样使用。
boolean类型没有明确大小,有些书上是1bit,有的是1字节。JVM没有明确的规定。
boolean flag=true;
System.out.println(flag);
字符串类型(引用类型)
String name="zhang";
System.out.println(name);
String 不是基本类型,而是引用类型
- 字符串的+操作表示字符串的拼接
String a="hello";
String b="world";
System.out.println(a+b);
2. 字符串的拼接(可以和整数进行拼接)
String str = "result = ";
int a = 10;
int b = 20;
String result = str + a + b;
System.out.println(result);
通过字符串的拼接,就可以同时打印多个字符串或数字。
常量
字面常量
10 //int 字面值常量(十进制)
010 //int (八进制)
0x10 //(十六进制)
10L //long 字面值常量
12.3 //double
1.0f //float
true //bollen
'A' //char
"abc" //string 字面值常量
final关键字修饰的常量
在C语言中定义常量时使用const进行修饰,但是在Java中定义一个常量用final进行修饰
int a=1;//变量
final int b=0; //常量
变量:在运行期间可以改变的,它的值只有在运行时才可以知道它的值;
常量:在编译期间就能确定它的值,在运行期间不可以进行改变。
//代码1
int a=10;
a=80;
int c=a+20;
System.out.println("c的值是:"+c);
//代码2
final int b=20;
//b=11;
int d=b+89;
System.out.println("d的值是:"+d);
在运行期间,常量不能被修改。
在代码1中,a是个变量,a的值在运行的时候才能知道a的值是多少;
在代码2中,b是一个常量,在编译的时候就已经被替换为常量20了。
常量一定要进行初始化,初始化之后才能使用。
类型转换及整型提升
理解类型转换
不同数据类型的变量之间进行赋值,表示范围更小的类型能隐式转换成范围较大的类型
将范围大的类型赋值给范围小的,需要进行强制类型转换,但是可能精度会丢失
boolean和其他数据类型不能进行转换(boolean和int,double,long等类型是毫不相干的两种类型)
int a=0;
double b=11.2;
a=(int)b;
整型提升
不同类型的数据进行运算,范围小的会提升成范围大的。
(int 和long 两种数据进 行运算,int就会提升成long)
对于不足四字节的类型,要先提升成4字节数据再进行运算。
int 和string 之间的相互转换
int转成String
int num =12;
//1:
String str1=num+"";
//2:
String str2=String.valueof(num);//将整型转换为字符串
String转成int
String str="100";
int num=Integer.parseInt(str);//将字符串转成整型
运算符
Java中的运算符和C语言中的运算符基本是相同的,但还是有个别差别。
运算符的类型:
算数运算符----->
基本四则运算: + - * / %;增量赋值运算:+= -= *= /= %= ;自增自减运算:++ –
关系运算符------> == != < > <= >=
逻辑运算符-------> && || !
位运算符----------> & | ~ ^
移位运算符--------> << >> >>>
条件运算符(三目运算符):表达式1 ?表达式2 :表达式3
Java运算符中要注意的:
- %运算:
==%==表示取余,不仅可以对int求模,也能对double来求模
- i++的特殊例子:
int i=10;
i=i++;
System.out.println(i);
3. 关系运算符的表达式返回值都是boolean类型。 true或者false
4.== !只能作用于布尔表达式。==
5.无符号右移>>>:不管符号位是0还是1,统一补0.
1111 1111 >>>1 ------------> 0111 1111
左移1位,相当于原数字*2。左移N位,相当于原数字 *2的N次方
右移1位,相当于原数字/2。右移N位,相当于原数字 / 2的N次方
运算符之间是有优先级的,但是对于具体的规则不需要进行记忆,如果存在歧义时加上括号。