JAVA学习笔记——第三章 变量

🔥博客主页A_SHOWY
🎥 系列专栏力扣刷题总结录 数据结构 云计算 数字图像处理 力扣每日一题_

变量

变量是程序的基本组成单位,是内存中的一个数据存储空间。变量有三个基本要素:类型+名称+值。变量的使用,声明后赋值后即可使用

变量使用注意事项:同c++很类似

程序中+号使用:左右都是数值型的时候,做加法运算,当有其中一边是字符串的时候,做拼接运算。

数据类型

基本数据类型+引用数据类型

整型细节

  1. JAVA整型常量默认值是int,声明long型常量需要在后边加l或者L

    java 复制代码
    int n1 = 1;//四个字节
    int n2 = 1L;//不对,因为先识别是long型变量不能放入int
    long n3= 1L; //匹配,正确
  2. bit:最小存储单位 byte:基本存储单位 1byte = 8bit(位)

浮点型细节

  1. 浮点数 = 符号位 + 指数位 + 尾数位
  2. 尾数可能丢失造成精度损失
  3. 默认是double类型,需要float加f
java 复制代码
double num = .123;
System.out.prinln(num5);//0.123
System.out.prinln(5.12e2);//512.0
System.out.prinln(5.12E-2);/0.0512

.123等价于0.123,5.12e2【5.12* 10 的2次方】5.12E-1【5.12除以10的-2次方】
5. 浮点数使用陷阱

java 复制代码
double num1 = 2.7;
double num2 = 8.1/3;//计算得到的
System.out.prinln(num1);//2.7
System.out.prinln(num2);//接近2.7小数
//得到结果对小数的运算结果进行相等判断的时候,要小心
//应该是两个数的差值绝对值在某个精度区间内判断
System.out.prinln(Math.abs(num1 - num2));
if(num1 == num2) System.out.prinln("相等"); //错误
if(num1 - num2 < 0.000001) System.out.prinln("相等"); //正确

matools.com api在线文档

字符类型细节

  1. 一个字符char,一个char两个字节4

  2. 比如当输出94的字符时,输出用94表示的字符

    java 复制代码
    char c4 = 94;//输出a
  3. char的本质是一个整数,默认输出时,是unicode码对应的字符,要输出数字,要进行(int)强制类型转换

  4. char类型可以运算

    java 复制代码
    System.out.println("a" + 10); //107
    
    char c5 = 'b' + 1;
    System.out.println((int)c5);//99
    System.out.println(c5);// c

字符类型本质探讨,字符型存储到计算机中,需要将对应码值找出来

存储:''a' ------> 码值97------>二进制(1100001)------>存储

读取二进制(1100001)------>码值97------>'a'------>显示
6. 编码特性

ASCll码 由一个字节表示的,128个字符,但是一个字节表示256个字符。Unicode 是ASCll扩展由两个字节表示字符,兼容ASCll码表。utf8 大小可变编码,字符用一个字节,汉字用三个字节 ,可以认为是unicode码的一个改进,互联网上使用最广unicode实现方式。gbk 字符用一个字节,汉字用两个字节。big5繁体中文

布尔类型细节

  1. 占用1个字节,适用于逻辑判断
  2. 不可以用0和非0整数代替true或者false,和c语言不同

API在线文档下·

基本数据类型转换

精度小的可以无误转换为精度大的

自动类型转换细节
  1. 有多种数据混合运算,系统自动转成容量最大的数据类型

  2. (byte,short)和char之间不会相互自动转换

  3. byte,short和char三者之间可以相互计算,计算时首先转换为int类型

    java 复制代码
    char b2 = 1;
    short s1 = 1;
    short s2 = b2 + s1;//错误的运算时会提升精度到int
    
    
    
    byte c1 = 1;
    byte c2 = 2;
    byte c3 = c1 + c2;//错误,只要有运算就是int
  4. 布尔类型不参与转换

强制类型转换细节
  1. 当进行数据精度大的到精度小的运用强制转换

  2. 强制转换符号只针对最近的数有效,可以用小括号提升优先级

  3. char可以保存int的常量值,但是不能保存int的变量值,需要强转

    java 复制代码
    char c1 = 100;
    int m = 100;
    char c2 = m;//不行
    char c3 = char(m);//可以

基本数据类型 -> string

java 复制代码
int n1 = 100;
double b2 = 2.2;
String str1 = n1 + "";
String str2 = b2 + "";

string -> 基本数据类型

保证s5格式正确,如果是字母,就会出现异常

java 复制代码
String s5 = "123";
       // 使用基本数据类型对应的包装类的相应方法,得到基本数据类型
        int num1 = Integer.parseInt(s5);
        double num2 = Double.parseDouble(s5);
        float num3 = Float.parseFloat(s5);
        long num4 = Long.parseLong(s5);
        byte num5 = Byte.parseByte(s5);
        boolean b = Boolean.parseBoolean("true");
        short num6 = Short.parseShort(s5);

字符串转成字符:从字符串取出第一个字符

java 复制代码
System.out.println(s5.charAt(0));

取出以后是字符1

作业练习:

java 复制代码
String name = "cpy";
        int age = 22;
        double score = 100.0;
        char sex = '男';
        String hoppy = "篮球";
        System.out.println("姓名\t年龄\t成绩\t性别\t爱好\n" + name + "\t" +
                age + "\t" + score + "\t" + sex + "\t" + hoppy);
相关推荐
二两小咸鱼儿1 小时前
Java Demo - JUnit :Unit Test(Assert Methods)
java·后端·junit
字节源流1 小时前
【spring】配置类和整合Junit
java·后端·spring
跪在镜子前喊帅1 小时前
【面试】Java 多线程
java·面试
好看资源平台2 小时前
Java/Kotlin逆向基础与Smali语法精解
java·开发语言·kotlin
zimoyin2 小时前
解决 Java/Kotlin 资源加载问题
java·python·kotlin
阿木看源码3 小时前
bindingAdapter的异常错误
java·开发语言
跪在镜子前喊帅3 小时前
【面试】框架
java·面试
~Yogi4 小时前
每日学习Java之一万个为什么
java·开发语言·学习
Simon523144 小时前
数据结构---八大排序
java·数据结构·排序算法
WeiLai11124 小时前
面试基础--高并发高可用架构深度实践:降级熔断(Hystrix vs Sentinel)核心原理与源码解析
java·分布式·后端·hystrix·面试·架构·sentinel