java变量与数据类型

更新时间:2021-10-14 14:26:49 点击次数:581次
1 整型类型变量
1.1 基础语法格式
int +变量名=初始值;

1.2 实例代码
 public static void main(String[] args) {
        int a=10;
    }
1.3 注意事项
java中int类型的变量占4个字节大小,有操作系统无关。

int类型的变量只能赋值整型的数据,不能赋值浮点型的数据。

int类型的范围是-2^32~2^32-1。若赋值超过这个范围就会报错

int类型的范围代码演示

 public static void main(String[] args) {
        int a=10;
        System.out.println(Integer.MAX_VALUE);
        System.out.println(Integer.MIN_VALUE);
    }


 2 长整型变量
2.1 基础语法格式
long+变量名=初始值 

2.2 实例代码
 public static void main(String[] args) {
        long a=10000L;
        
    }
2.3 注意事项
初始时使用数字加上L(l)的方式,一般都使用L,因为l在视觉上容易于1混淆

初始时可以使用整型直接赋值的,但是数字较大的时候就会出现类型不匹配的错误。

Java 中 long 类型占 8 个字节. 表示的数据范围 -2^63 -> 2^63-1

long范围代码演示

 public static void main(String[] args) {
        long a=10000;
        System.out.println(Long.MAX_VALUE);//最大值
        System.out.println(Long.MIN_VALUE);//最小值
 
    }

 3 双精度浮点型变量
3.1 基础语法格式
double+变量名=初始值

3.2 实例代码
public static void main(String[] args) {
        double d=10.7;
    }
 3.3 注意事项
Java中double类型的数据存在一定的进度误差

例如

 public static void main(String[] args) {
 
        double d1=1.1;
        System.out.println(d1*d1);
    }


 这里的运行结果出现了精度的误差。

double 占有8个字节

4 单精度浮点型变量
4.1 基础语法格式
float+变量名=初始值;

4.2 实例代码
public static void main(String[] args) {
        float f1=10.3f;
        System.out.println(f1);
    }
 4.3 注意事项
初始化时要在数据的后面加上F或者f,不能直接使用小数进行赋值。

例如



 这样书写就是错误的,因为,float占4个字节。f2是float类型的变量,10.3是double类型的变量,

double类型的变量占8个字节,所以赋值时会出现类型不匹配的错误

5 字符类型变量
5.1 基础语法形式
char+变量名=初始值;

5.2 实例代码
 public static void main(String[] args) {
        char ch ='a';
        System.out.println(ch);
    }
5.3 注意事项
Java中用‘’+一个字符的形式表示字符

Java中使用 Unicode 表示字符,因此Java中char占有两个字节,表示的范围更大,包括中文。

6 字节类型变量
6.1 基础语法格式
byte+变量名=初始值;

6.2 实例代码
 public static void main(String[] args) {
        byte b=10;
        System.out.println(b);
    }
 6.3 注意事项
字节类型表示的也是整数,只占有一个字节。

字节类型和字符类型互不相干。

7 短整型变量
7.1 基础语法格式
short+变量名=初始值;

7.2 实例代码
 public static void main(String[] args) {
        short s=10;
        System.out.println(s);
    }
7.3 注意事项
1. short 占用 2 个字节 , 表示的数据范围是 - 32768 - > +32767
2 这个数据类型表示的范围比较小,一般不推荐使用。、
8 布尔类型变量
8.1 基础语法格式
boolean+变量名=初始值;

8.2 实例代码
public static void main(String[] args) {
        boolean bl=true;
        System.out.println(bl);
    }
8.3 注意事项
boolean只有两种取值ture表示真和false表示假。

Java中boolean于int没有任何关系,不存在0表示假,非0表示真。

boolean所占字节的大小没有明确规定。

9 字符串类型变量
9.1 基础语法格式
String+变量名=初始值;

9.2 实例代码
  public static void main(String[] args) {
        String str="hello world";
        System.out.println(str);
    }
 9.3 注意事项
1. Java 使用 双引号 + 若干字符 的方式表示字符串字面值 .
2. 和上面的类型不同 , String 不是基本类型 , 而是 引用类型 ( 后面重点解释 ).
3. 字符串中的一些特定的不太方便直接表示的字符需要进行转义 .
转义字符示例
 
// 创建一个字符串 My name is "张三" 
String name = "My name is \"张三\"";
Java中的常见转义字符



 字符串的+拼接符

例如:

public static void main(String[] args) {
        String str1="Hello ";
        String str2="World";
        System.out.println(str1+str2);//拼接成新的字符串“Hello World”;
    }
 

 字符串也可以和整数进行拼接

 字符串和整数进行拼接时就是:当整数遇到字符串就会作为字符串拼接在一起。

例如:

public static void main(String[] args) {
        String str1="Hello ";
        String str2="World";
        int a=10;
        int b=20;
        System.out.println(str1+str2+a+b);//拼接成新的字符串“Hello World1020”;
    }


10 变量的作用域
也就是该变量能生效的范围 , 一般是变量定义所在的代码块 ( 大括号 )
例如:
public static void main(String[] args) { 
 { 
 int x = 10; 
 System.out.println(x); // 编译通过; 
 } 
 System.out.println(x);//  编译失败,找不到x
}
11 变量的命名规范
硬性指标 :
1. 一个变量名只能包含数字 , 字母 , 下划线
2. 数字不能开头 .
3. 变量名是大小写敏感的 . 即 num 和 Num 是两个不同的变量 .
注意 : 虽然语法上也允许使用中文 / 美元符 ($) 命名变量 , 但是 强烈 不推荐这样做 .
软性指标 :
1. 变量命名要具有描述性 , 见名知意 .
2. 变量名不宜使用拼音 ( 但是不绝对 ).
3. 变量名的词性推荐使用名词 .
4. 变量命名推荐 小驼峰命名法 , 当一个变量名由多个单词构成的时候 , 除了第一个单词之外 , 其他单词首字母都大写。
小驼峰命名法示例
int maxValue = 100; 
String studentName ="张三";
12 常量
上面讨论的是不同类型的变量,同样每种类型都对应这它们的常量

常量是指在程序运行的过程中不能改变的值

常量有以下两种:

12.1 字面值常量
10 // int 字面值常量 ( 十进制 )
010 // int 字面值常量 ( 八进制 ) 由数字 0 开头 . 010 也就是十进制的 8
0x10 // int 字面值常量 ( 十六进制 ) 由数字 0x 开头 . 0x10 也就是十进制的 16
10L // long 字面值常量 . 也可以写作 10l ( 小写的 L)
1.0 // double 字面值常量 . 也可以写作 1.0d 或者 1.0D
1.5e2 // double 字面值常量 . 科学计数法表示 . 相当于 1.5 * 10^2
1.0f // float 字面值常量 , 也可以写作 1.0F
true // boolen 字面值常量 , 同样的还有 false
'a' // char 字面值常量 , 单引号中只能有一个字符
"abc" // String 字面值常量 , 双引号中可以有多个字符 .
12.2 final修饰的常量
final int a = 10; 
a = 20; //编译出错,a此时是常量,程序运行过程中不能被修改
13 数据类型转换
java是强类型的语言,对不同类型的装换检查比较严格。

13.1 int和double,long之间的装换
public class TestDom {
    public static void main(String[] args) {
        int a=10;
        double b=10.0;
        long c=20;
        a=b;//编译失败,浮点型赋值给整型会导致精度丢失。
        b=a;//编译通过
        a=c;//编译失败,长整型赋值给整型会导致精度丢失。
        c=a;//编译通过
        
    }
double表示的范围更大,可以将int赋值给double,但是不能将double赋值给int

long表示的范围更大,可以将int赋值给long,但是不能将long赋值给int

结论 : 不同数字类型的变量之间赋值 , 表示范围更小的类型能隐式转换成范围较大的类型 , 反之则不行 .
13.2 int和boolean之间的转换
  public static void main(String[] args) {
        int a = 10;
        boolean b = true;
        b = a; // 编译出错, 提示不兼容的类型
        a = b; // 编译出错, 提示不兼容的类型
    }
结论 : int 和 boolean 是毫不相干的两种类型 , 不能相互赋值 .
13.3 int和byte之间的转换
 public static void main(String[] args) {
        byte a=100;//编译通过
        byte b=256;//编译失败,从int转换为byte可能会导致数据丢失
    }
byte 表示的数据范围是 -128 -> +127, 256 已经超过范围, 而 100 还在范围之内

结论: 使用字面值常量赋值的时候, Java 会自动进行一些检查校验, 判定赋值是否合理

13.4 强制类型转换
 public static void main(String[] args) {
        int a = 0;
        double b = 10.5;
        a = (int)b;//编译通过
    }
结论 :
使用 ( 类型 ) 的方式可以将 double 类型强制转成 int. 但是
1. 强制类型转换可能会导致精度丢失 . 如刚才的例子中 , 赋值之后 , 10.5 就变成 10 了 , 小数点后面的部分被忽略 .
2. 强制类型转换不是一定能成功 , 互不相干的类型之间无法强转,例如:int和boolean
13.5 类型转换小结
1. 不同数字类型的变量之间赋值 , 表示范围更小的类型能隐式转换成范围较大的类型 .
2. 如果需要把范围大的类型赋值给范围小的 , 需要强制类型转换 , 但是 可能精度丢失 .
3. 将一个字面值常量进行赋值的时候 , Java 会自动针对数字范围进行检查 .
14 数值提升
14.1 int和long混合运算
   public static void main(String[] args) {
        int a=10;
        long b=20;
        a=a+b;//编译报错,long到int可能导致数据丢失
        b=a+b;//编译通过
    }
结论 : 当 int 和 long 混合运算的时候 , int 会提升成 long , 得到的结果仍然是 long 类型 , 需要使用 long 类型的变量来
接收结果 . 如果非要用 int 来接收结果 , 就需要使用强制类型转换
14.2 byte和byte的运算
 public static void main(String[] args) {
        byte a=10;
        byte b=20;
        byte c=a+b;//编译出错,从int到byte可能导致数据丢失
    }
结论 : byte 和 byte 都是相同类型 , 但是出现编译报错 . 原因是 , 虽然 a 和 b 都是 byte, 但是计算 a + b 会先将 a 和 b 都
提升成 int, 再进行计算 , 得到的结果也是 int, 这是赋给 c, 就会出现上述错误 .
由于计算机的 CPU 通常是按照 4 个字节为单位从内存中读写数据 . 为了硬件上实现方便 , 诸如 byte 和 short 这种低于
4 个字节的类型 , 会先提升成 int, 再参与计算 .
14.3 类型提升小结
1. 不同类型的数据混合运算 , 范围小的会提升成范围大的 .
2. 对于 short, byte 这种比 4 个字节小的类型 , 会先提升成 4 个字节的 int , 再运算

本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是一个个人学习交流的平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽,造成漏登,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

回到顶部
嘿,我来帮您!