在Java程序运行中中,我们把固定不变的的量,叫做常量,随着程序运行发生变化的量叫做变量。比如之前打印的hello word
在程序运行时不会发生改变所以是常量。像一个人的你年龄会随着时间的变化而变化就是变量
在Java程序中,对于经常改变的内容称为变量而数据类型就是用来定义不同种类变量的
作用: 一次接受一个数据,将来定义一个变量,接受一个值,后续可能根据不同的情况对此值进行修改,此时就可以用变量。
变量的语法格式为:
数据类型 变量名 = 初始值;
基本语法格式
int 变量名 = 初始值;
示例:
public test class{
public static void main(String[] args)
{
int a =89; //初始化变量并对a进行赋值
System.out.println(a);
}
}
注意事项:
- int 表示变量的类型是一个整型。
- 变量名的变量的表示名,后续通过这个给变量设置初始值。
- Java中的
=
表示赋值的意思,并不是数学中的等于。- 初始化的操作是可有可无的,但建议创建变量时显示初始化。
//
/**/
都表示注释,注释内容不参与编译。- 一句话说完要在结尾处加上分号,否则会导致编译失败。
在Java中一个int占4个字节,无论是32位操作系统还是64位操作系统。 int
的数据范围是: -2147483648 ~ +2147483647
public test void{
public static void main(String[] args)
{
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
} //显示int 最大范围和最小范围
}
如果运算的数据超出int
最大范围,我们需要考虑用long
(长整型)防止溢出。
基本语法格式:
long 变量名 = 初始值
示例:
publi test void{
public static void main (String[] args)
{
lnog a =100000L;
System.out.println(a);
}
}
注意事项:
基本语法格式和创建 int 变量基本一致, 只是把类型修改成 long
在Java中long
类型的范围是:-9223372036854775808 ~ +9223372036854775807
public test class{
public static void main(String[] args)
{
System.out.println(Long.MAX_VALUE);
System.out.println(Long.MIN_VALUE);
} //查看long的的最大最小范围
}
基本语法格式:
short 变量名 = 初始值;
short
只占用2个字节范围是 -32768 -> +32767
基本语法格式:
double 变量名 = 初始值
;
代码示例1:
public test class{
public static void main(String[] args)
{
double a =3.14; //初始化双精度浮点类型的变量
System.out.println(a);
}
}
代码示例2:
public test class{
public static void main(String[] args)
{
int a = 1;
int b = 2;
System.out.println(a/b)
}
}
在 Java 中, int 除以 int 的值仍然是 int(会直接舍弃小数部分)。如果想得到 0.5, 需要使用 double 类型计算。
public test class{
public static main void {
double a = 1;
double b = 2;
System.out.println(a/b);
} //使用double类型是进行计算结果是0.5
}
值得注意的是double类型存在一定的误差。无法精确的打印浮点数。
public class test {
public static void main (String[] args)
{
double a;
a = 89.1234567890505659456678;
System.out.println(a);
}
} //打印的结果是89.12345678905056
基本格式:
float 变量名 = 初始值;
代码示例:
public class test {
public static void main(String[] args)
{
float a = 3.2f; //写F或者f都可以
System.out.printn(a);
}
}
由于float类型在Java中只占四个字节,同时表示的数据精确范围较小,在编写工程文件时优先考虑使用double
类型
基本语法格式:
char 变量名 = 初始值;
代码示例:
public test class{
public static void main(String[] args)
{
char t = 'A';
char y = '牛'; //使用一个字符表示汉字
System.out.println(t);
System.out.println(y);
}
}
在Java中使用单引号+单个字母
的形式表示字符字面值。
计算机中的字符本质上是一个整数,在C语言中使用ASCII表示字符,而Java中使用Unicode表示字符,因此一个字符占用两个字节,表示的字符种类更多,也包括中文。
javac -encoding UTF-8 Test.java
字符串就是将字符组装到一起。
基本语法:
String 变量名 = "初始值";
public class test{
public static void main (String[] args)
{
String name = "KeLi";
System.out.println(name);
}
}
注意事项:
String
类型并不是基本数据类型,是对象类型双引号 + 若干字符
的方式表示字符串字面值。/
。基本语法
byte 变量名 = 初始值;
代码示例;
public test class{
public static void main (String[] args)
{
short value 0;
System.out.println(value);
}
}
short占用2个字节,数据范围时; -32768 -> +32767
与其他数值类型相比布尔类型(boolean)并不是用来储存数字的,它更是一种状态分为:
true 真
false 假
注意事项:
概述: 标识符就是给类、方法、变量取名字的
1.概述:咱们给类,方法,变量取的名字
2.注意:
a.硬性规定(必须遵守)
标识符可以包含"英文字母","数字","$和_"
标识符不能以数字开头 int i1 = 100(正确) int 1i = 100(错误)
标识符不能是关键字 int static = 100(错误) int public = 100(错误)
b.软性建议(可遵守可不遵守,但是建议遵守)
给类取名字:遵循大驼峰式 -> 每个单词首字母大写
给方法和变量取名字:遵循小驼峰式 -> 从第二个单词开始往后首字母大写
驼峰命名法是一种编程命名规范,也被称为驼峰式命名法(CamelCase)。根据这个规范,变量名、函数名和类名都应使用有意义的名称。遵循以下规则:
变量名:myVariable, age, firstName, lastName
函数名:calculateTotal, getName, isValidEmail
类名:Car, Calculator, Student
驼峰命名法在一定程度上提高了代码的阅读性。
在第一个Java程序中System.out.println(“hello word”);
中的hello word就是常量。常量即程序运行期间,固定不变的量称为常量,像一天有24个小时,一小时20分钟。
public test class {
public static void main(String[] args);
{
System.out.println("hello word");
System.out.println(1000);
System.out.println(3.1415926);
System.out.println("A");
System.out.println(false);
System.out.println(true);
}
}
ps: 100、3.14、‘A’、true/false都是常量,将其称为字面常量。
字面常量的分类:
字面常量与常量的区别:
public class test{
public static void main (String[] args)
{
final int a = 8; //final 在语法上将a从变量定义为常量
a = 4; //编译出错,Idea会提示无法为最终变量a分配值
System.out.println(a);
}
}
在日常生活中的数据类型分别为小数、整数、负数等。在Java程序中主要分为基本数据类型和引用数据类型。
基本的数据类型分为四类八种
四类:整形 浮点型 字符型 布尔型
八种: 字节型 短整型 整形 长整型 单精度浮点数 双精度浮点数 字符型 布尔型
需要注意的是:
int
都只占用4个字节,long
都只占用8个字节什么时候发生数据转换:
- 1、等号左右两边类型不一致
- 2、不同的数据类型作运算
数据类型转换可以分为:
- 自动类型转换
- 强制类型转
基本数据类型从小到大排序、
byte,short,char
-> int
- > long
-> float -> double
将取值范围小的数据类型赋值给取值范围大的数据类型 -> 小自动转大; 取值范围小的数据类型和取值范围大的数据类型数据做运算 -> 小自动转大。
System.Out.println(1024); // 整型默认情况下是int
System.Out.println(3.14); // 浮点型默认情况下是double
int a = 100;
long b = 10L;
b = a; // a和b都是整形,a的范围小,b的范围大,当将a赋值给b时,编译器会自动将a提升为long类型,然后赋值
a = b; // 编译报错,long的范围比int范围大,会有数据丢失,不安全
float f = 3.14F;
double d = 5.12;
d = f; // 编译器会将f转换为double,然后进行赋值
f = d; // double表示数据范围大,直接将float交给double会有数据丢失,不安全
byte b1 = 100; // 编译通过,100没有超过byte的范围,编译器隐式将100转换为byte
byte b2 = 257; // 编译失败,257超过了byte的数据范围,有数据丢失
当将取值范围大的数据类型赋值给取值范围小的的数据类型 -> 据需要强制转换
强制类型转换格式:
取值范围小的数据类型 变量名 = (取值范围小的数据类型)取值范围大的数据类型
eg:
int i = (int)9.2;
int a = 10;
long b = 100L;
b = a; // int-->long,数据范围由小到大,隐式转换
a = (int)b; // long-->int, 数据范围由大到小,需要强转,否则编译失败
float f = 3.14F;
double d = 5.12;
d = f; // float-->double,数据范围由小到大,隐式转换
f = (float)d; // double-->float, 数据范围由大到小,需要强转,否则编译失败
a = d; // 报错,类型不兼容
a = (int)d; // int没有double表示的数据范围大,需要强转,小数点之后全部丢弃
byte b1 = 100; // 100默认为int,没有超过byte范围,隐式转换
byte b2 = (byte)257; // 257默认为int,超过byte范围,需要显示转换,否则报错
boolean flag = true;
a = flag; // 编译失败:类型不兼容
flag = a; // 编译失败:类型不兼容
需要注意的是:
- 不要随意对数据进行请强制转换,会出现损失精度及数据溢出的现象除非没有办法
- byte,short定义的时候如果等号右边是整数常量,如果不超出byte和short的范围,不需要我们自己强转,jvm自动转型 ;byte,short如果等号右边有变量参与,byte和short自动提升为int,然后结果再次赋值给byte或者short的变量,需要我们自己手动强转
- char 类型的数据如果参与运算会自动提升int类型 ,可在ASCII码表中找到对应int值与字符,若没有可在unicode码表中找到
- 强制类型转换不一定能成功,不相干的类型不能互相转换