CGB1-day2-数据类型

1. 数据类型

1.1 前言

1.1.1 标识符

可以简单的理解为一个名字。在Java中,我们需要标识代码的很多元素,包括类名、方法、字段、变量、包名等。我们选择的名称就称为标识符,并且遵循以下规则:

  • 标识符可以由字母、数字、下划线(_)、美元符($)组成,但不能包含 @、%、空格等其它特殊字符。
  • 不能以数字开头。
  • 标识符是严格区分大小写的。
  • 标识符的命名最好能反映出其作用,做到见名知意。
1.1.2 关键字

在java语言中已经被赋予特定意义的一些单词。

  • 一共有53个关键字。其中有两个保留字:const和goto。
  • 关键字不能被用作标识符!!
    关键字
1.1.3 注释

Java代码的解释说明。不影响程序的运行,用于辅助读程。

  • // 单行注释
  • /* 多行注释 */
  • /** 文档注释 */
1.1.4 变量

在JAVA中,有的数据值是不固定的,总在变,我们还需要记录这些值,我们可以把这些值理解为变量。
我们通过三个元素来描述变量:变量类型,变量名以及变量值。

int age=18;   //声明int类型的变量并赋值
String tel;  //声明String类型的变量

注意:
1、 变量名必须是一个有效的标识符。
2、 变量名不可以使用java关键字
3、 变量名不能重复

1.1.5 常量

在程序运行过程中一致不会改变的量成为常量。

1.2 基本类型(八种)

1.2.1 介绍

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传数据类型

1.2.2 练习1:测试最大值最小值
  • 创建工程day02
  • 创建cn.chuci.basic包
  • 创建Test1_Scope.java
package cn.chuci.basic;

//这个类用来测试取值范围
public class Test1_Scope {
       public static void main(String[] args) {

              //整型测试 byte short int long
              //定义变量记录最大值 最小值
              //数据类型 数据名  数据值

              byte max = Byte.MAX_VALUE;
              byte min = Byte.MIN_VALUE;
              System.out.println(max);//127
              System.out.println(min);//-128

              short smax = Short.MAX_VALUE;
              short smin = Short.MIN_VALUE;
              System.out.println(smax);//32767
              System.out.println(smin);//-32768

              int imax = Integer.MAX_VALUE;
              int imin = Integer.MIN_VALUE;
              System.out.println(imax);//2147483647
              System.out.println(imin);//-2147483648
             
              long lmax = Long.MAX_VALUE;
              long lmin = Long.MIN_VALUE;
              System.out.println(lmax);//9223372036854775807
              System.out.println(lmin);//-9223372036854775808
             
              //浮点型 float double
              float fmax = Float.MAX_VALUE;
              float fmin = Float.MIN_VALUE;
              System.out.println(fmax);//3.4028235E38
              System.out.println(fmin);//1.4E-45
             
              double dmax = Double.MAX_VALUE;
              double dmin = Double.MIN_VALUE;
              System.out.println(dmax);//1.7976931348623157E308
              System.out.println(dmin);//4.9E-324
             
              //布尔类型boolean
              boolean b = false;
              boolean b2 = true;
             
              //字符型char
              char c  = 'a';//可以存一个字符
              char c2 = 128;//可以存一个数字
              char c3 = '中';//可以存一个汉字
              System.out.println(c);
             
              //char类型可以存数字,但是在打印时,会去查ascii码表,把这个数字对应着的字符是什么拿出来使用。
              //ascii码表里只规定过来数字0-127对应着的字符,128-65535默认按照字符?处理
              System.out.println(c2);//?
              System.out.println(c3);
       }
}
1.2.3 练习2:输入个人信息
package cn.chuci.basic;

//这个类用来测试个人信息
public class Test2_Info {
       public static void main(String[] args) {
              String name = "楚辞";
              //通过+拼接字符串
              System.out.println("我叫"+name);
              int age=20;
              //如果中间要动态拼接字符串"+?+"
              System.out.println("我叫"+name+",今年"+age+"岁");
       }
}

2 基本类型的字面值(5条)

2.1 整数字面值是int类型

int a = 9999999;

2.2 byte,short,char三种比int小的整数可以用范围内的值直接赋值

byte b = 127;
byte b2 = 128;//右面128字面值是int类型,已经超出byte取值范围

2.3 浮点数的字面值是double类型

float f = 3.0;//错误,右面的字面值是double类型,左面是float类型,放不下的。

2.4 字面值后缀LFD

long a = 999999999999L;// 999999999999字面值是int类型,但是超出了int取值范围,会报错,解决方案就是加后缀L,从int转成long
float b = 3.0F;//3.0字面值是double类型,加后缀F会变成floa类型
double d = 3D;//3字面值是int类型,加后缀D,会变成double类型

2.5 进制前缀

  • 0x - 16进制 0x0001
  • 0 -8进制 023
  • 0b -2进制 0b0101
  • \u -char类型,16进制 ,默认值是\u0000

3 基本类型的类型转换

3.1 小到大/隐式转换

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传类型自动转换

//小转大/隐式转换
byte m = 10;
long n = m;//小转大,右面的m是小类型,给左面的n大类型赋值,可以直接使用

3.2 大到小/显示转换

需要强制类型转换

//大转小/显示转换
float x = 9.9F;
int y = (int)x ;//大转小,右面的x是大类型,给左面的y小类型赋值,不可以直接赋值。需要添加强转的代码(小类型)

4 运算规则(5条)

4.1 计算结果的数据类型,与最大类型一致

System.out.println(3/2);//1,int/int,得到的结果类型还是int
System.out.println(3/2d);//1.5,int/double。得到的结果是double

4.2 byte,short,char三种比int小的整数,运算时会先自动转换成int

byte a = 1;
byte b = 2;
byte c = (byte)(a+b);//a+b会自动提升成int类型,右面得运算结果就是int大类型,给左面的byte小类型赋值,不可以,需要强转。

4.3 整数运算溢出

整数运算,类似于一个钟表,转到最大时,再转会回到最小。
计算:光速运行一年的长度是多少米?3亿m/s

//溢出的现象:因为做了大的整型数据的运算,会超出int取值范围。解决方法:把整数提升成long类型。
       System.out.println(300000000L*60*60*24*365);

4.4 浮点数运算不精确

为什么浮点精度运算会有问题
我们平常使用的编程语言大多都有一个问题——浮点型精度运算会不准确。比如

double num = 0.1 + 0.1 + 0.1;
// 输出结果为 0.30000000000000004
double num2 = 0.65 - 0.6;
// 输出结果为 0.05000000000000004

4.5 浮点数的特殊值

Infinity 无穷大  3.14/0
NaN  not a number   0/0.0

5 运算符

5.1 概述

在这里插入图片描述

通常,我们用0表示false,用1表示true
与:表示并且的关系
单与&:
1 & 2 ,结果想要是true,要求1和2都必须是true
双与/短路与&&:
1 && 2 ,当1是false时,2会被短路,提高程序的效率
或:表示或者的关系
单或|:
1 | 2,结果想要是true,要求1和2只要有一个为true就可以
双或/短路或||:
1 || 2,当1是true时,2会被短路,提高程序效率

5.2 练习1:自增自减

package cn.chuci.basic;

//这个类用来测试自增自减
public class Test5_Yunsuanfu {
    public static void main(String[] args) {
     
       //符号在前,先变化再使用
       //符号在后,先使用再变化
       int a = 1;
       System.out.println(a++);
      
       int b = 1;
       System.out.println(++b);
      
       System.out.println(++a+a+b++);//3+3+2
      
       int c = 1;
       System.out.println(c--);
      
       int d = 1;
       System.out.println(--d);
      
       System.out.println(--c-c-c--);//-1-(-1)-(-1)
    }
}

5.3 练习2:两个数的最大值

package cn.chuci.basic;
 
import java.util.Scanner;
 
//这个类用来获取两个数中的大值
public class Test6_Max {
    public static void main(String[] args) {
       //1、接收键盘输入的两个整数
       int a = new Scanner(System.in).nextInt();
       int b = new Scanner(System.in).nextInt();
      
       //2、比较,用三元运算符比较  1 ?  2 :  3
       int max = a > b ?  a :  b;
       System.out.println(max);
      
//TODO 如何比较三个数中的大值呢?
      
    }
   
}

5.4 练习3:平年闰年

输入年号,判断是否是闰年。
  两个条件:
  1、能被4整除,并且不能被100整除
  2、能被400整除
package cn.chuci.basic;
 
import java.util.Scanner;
 
//这个类用来测试平年闰年
public class Test7_Runnian {
    public static void main(String[] args) {
       //1、输入年号,判断是否是闰年
       int year = new Scanner(System.in).nextInt();
      
       String desc = "平年";//设置默认值,假设每年都是平年
       //2、判断,年号是否满足闰年的条件
       //if(判断条件){满足条件的代码}
//     if(year%4==0){//能被4整除
//         if(year%100 != 0){//并且不能被100整除
//            desc = "闰年";//修改默认值
//         }
//     }
//     if(year%400 == 0){//能被400整除
//         desc = "闰年";//修改默认值
//     }
       //TODO 代码优化...
//     1、能被4整除,并且不能被100整除
//     2、能被400整除
//     if(  (小判断条件1   &&  小判断条件2  ) ||   判断条件2){满足条件的代码}
//     if(  (能被4整除   &&  不能被100整除  ) ||  能被400整除){
       if(  (year%4==0   &&  year%100 != 0  ) ||  year%400 == 0){
           desc = "闰年";//修改默认值
       }
      
       System.out.println(year+"年是"+desc);
    }
}

至此,本节完~~~

上一节:CGB1-day1–HelloWorld
下一节:

此 系 列 以 完 整 记 录 自 己 在 J a v a 学 习 路 的 过 程 此系列以完整记录自己在Java学习路的过程 Java

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值