Java语言基础篇(运算符、数据类型、进制【常用进制】)

简介: Java语言基础第一篇(运算符、数据类型、进制【常用进制】)

@TOC

🎖️Java主类结构

Java语言是面向对象的程序设计语言,Java程序的基本组成单元是类,类体中又包含属性和的方法两部分。每一个应用程序都必须包含一个main()方法,所以,含有main()方法的类就称为主类。
包声明→声明成员变量和局部变量→编写主方法→导入API类库

package Number ;//声明一个包
public class Frist{
    String s1 = "你好";//声明成员变量(全局变量)
   public static void main(String[] arg){//编写主方法,主方法的public是权限修饰符,static静态修饰符,void返回值修饰符
       String s2 = "Java";//声明局部变量
       System.out.println(s1);//
       System.out.println(s2);//输出结果
    }
}
成员变量和局部变量的区别:
通常将类的属性称之为全局变量(成员变量),将方法中的属性称之为局部变量。
成员变量(全局变量)声明在类体中,局部变量声明在方法体中。
全局变量和局部变量都有自己的有效范围:
由于变量被定义出来后只是暂时存放在内存中,等到执行到某一个点,该变量就会被释放掉,可以理解为变量有它自己的生命周期,一般根据变量的“有效范围”,就将变量分为“全局变量”和“局部变量”。
全局变量(成员变量):成员变量在整个类中都有效,类的成员变量又分为两种,“静态变量”和“实例变量”
    静态变量   实例变量前加static关键字 static 变量类型 变量名;(静态变量的有效范围可以跨类,甚至可以用到整个应用程序,调用方法:类名.静态变量)
局部变量:因为局部变量定义在方法体中,所以有效范围也就是只在当前方法代码块中有效
全局变量和局部变量都有自己的有效范围:
由于变量被定义出来后只是暂时存放在内存中,等到执行到某一个点,该变量就会被释放掉,可以理解为变量有它自己的生命周期,一般根据变量的“有效范围”,就将变量分为“全局变量”和“局部变量”。
全局变量(成员变量):成员变量在整个类中都有效,类的成员变量又分为两种,“静态变量”和“实例变量”
    静态变量   实例变量前加static关键字 static 变量类型 变量名;(静态变量的有效范围可以跨类,甚至可以用到整个应用程序,调用方法:类名.静态变量)
局部变量:因为局部变量定义在方法体中,所以有效范围也就是只在当前方法代码块中有效

🎖️运算符

运算符:赋值运算符,算术运算符,自增自减运算符,比较(关系)运算符,逻辑运算符,位运算符,三元运算符

赋值运算符:是一个二元运算符(顾名思义对两个操作数处理),用“=”表示,例如:

public class Ecal{
   
   public static void main(String[] arg){
   
       int a,b,c;
       a=15;
       b=c=a-1;
       System.out.println("b的值为"+b);
       System.out.println("c的值为"+c);
   }
}
注意:赋值运算符除了用“=”表示意外,还有复合运算符
    “/=”:a /= 2,可以表示为a=a/2;
    “*=”:a *= 2,可以表示为a=a*2;
    “+=”:a += 2,可以表示为a=a+2;
    “-=”:a -= 2,可以表示为a=a-2;
    如:
public class Val1 {
   
   public static void main(String[] arg){
   
        int a=10;
        System.out.println("a/=2的值为:"+(a /= 2));//此时a=5
        System.out.println("a*=2的值为:"+(a *= 2));//此时a等于10
        System.out.println("a+=2的值为:"+(a += 2));//12
        System.out.println("a-=2的值为:"+(a -= 2));//10
        System.out.println("a%=2的值为:"+(a %= 2));//0
        System.out.println(a*2);
    }
}

算数运算符:(+,-,*,/,%)(属于二元运算符)

package com.ymy.work;
public class afterAll{
   
    static float num1=1.21f;
    public static void main(String[] args) {
   
        byte num2 = 120;
        System.out.println("num1+num2的和为:"+(num1+num2));
        System.out.println("num1-num2的差为:"+(num2-num1));
        System.out.println("num1*num2的和为:"+(num1*num2));
        System.out.println("num1/num2的和为:"+(num1/num2));
    }
}

自增自减运算符:++a,--a,a++,a--,(属于单目运算符)
++a(--a):先做运算a+1(a-1);
a++(a--):在使用变量之后做运算;

public class afterAll{
   
    public static void main(String[] args) {
   
        int a =2;
        int v =a++;
        System.out.println(v);//输出结果2

        int a1=2;
        int v1 =++a1;
        System.out.println(v1);//输出结果3

        int a2=2;
        int v2 =a2--;
        System.out.println(v2);//输出结果2

        int a3=2;
        int v3 =--a3;
        System.out.println(v3);//输出结果1
    }
}

比较运算符:运算结果为Boolean型(>,<,>=,<=,==,!=)。(属于二元运算符)通常作为判断的一句用在条件语句中

public class afterAll{
   
    public static void main(String[] args) {
   
        int number1=4;
        int number2=5;
        /**依次将变量number1和变量number2的比较结果输出*/
        System.out.println("number1>number2的比对结果:"+(number1>number2));//false
        System.out.println("number1<number2的比对结果:"+(number1<number2));//true
        System.out.println("number1!=number2的比对结果:"+(number1!=number2));//true
        System.out.println("number1>number2的比对结果:"+(number1==number2));//false
        System.out.println("number1>=number2的比对结果:"+(number1>=number2));//false
        System.out.println("number1>=number2的比对结果:"+(number1>=number2));//false

    }
}

逻辑运算符:&&,||,!
除了“!”是单目运算符,其余两个都是二元运算符,返回类型为Boolean值的表达式,逻辑运算符的操作元必须是Boolean型数据。

public class afterAll{
   
    public static void main(String[] args) {
   
        int a =4;
        int b =5;
        int c =6;
        System.out.println(a<b&&b<c);//两个都为真,结果为true
        System.out.println(a<b||b>c);//一真一假,结果为true
        System.out.println(!(a<b&&b<c));//真的前面加非,结果为false
    }
位运算符:(位逻辑运算符)和(位移运算符)
(位逻辑运算符)》按位与,按位或,按位取反,按位异或。
按位与:运算符位“&”,是二元运算符,运算法则为:两个整型数据对应位都是1,结果才为1,否则为0;
按位或:运算符位“|”,是双目运算符,运算法则为:两个整型数据对的位都是0,结果才为0,否则为1;
按位取反:运算符“~,是单目运算符,运算法则为:“按位非运算”,就是将操作数二进制中的1改为0,把0改为1;
按位异或:运算符“^”,是双目运算符,运算法则为:只有两个操作数的二进制表示相同(同时为0或同时为1),结果才为0,否则为1;

(位移运算符)》左移位,右移位,无符号右移位。
”<<“:左移位
”>>“:右移位
”>>>“:无符号右移位
技巧:移位运算符适用的数据类型都是整型(也包含字符型char,因为Java采用的是Unicode无符号编码,而这么多字符里面每一个字符都有自己的字符码,因为字符码也可以当作整型,所以charint可以进行显示(强制)转换)
    移位可以实现整数乘以或除以2^n的效果,比如:
    y<<2 那他就等于y* 2^2
    y<<100 那他就等于y* 2^100
    y<<n   那他就等于y* 2^n
    反之
    y>>2 那他就等于y/ 2^2
    y>>100 那他就等于y/ 2^100
    y>>n 那他就等于y/ 2^n

 无符号右移:无论最高位(符号位)是0还是1,左侧被移空的高位都填0
学习位运算符,要先知道源码,反码,补码。
原码、反码、补码的出现是为了方便计算机表示、计算负数参与的加减法运算。因此,原码,反码,补码是机器存储一个具体数字的编码方式。
原码:在数值前直接加一符号位的表示法,对于8位二进制来说:
[+7]= 0 0000111 [-7]= 1 0000111
反码:正数的反码与原码相同;负数的反码,符号位为“1,数值部分按位取反。
[+7]= 0 0000111 [-7]= 1 1111000
补码:正数的补码和原码相同;负数的补码则是符号位为“1,数值部分按位取反后再在末位(最低位)1,也就是“反码+1”。
[+7]= 0 0000111 [-7]= 1 1111001
其中正整数的原码、反码和补码都一样;
负数部分:
原码和反码的相互转换:符号位不变,数值位按位取反;
原码和补码的相互转换:符号位不变,数值位按位取反,末位再加1;
已知补码,求原码的负数的补码:符号位为1,数值位全部取反,末位再加1。 

总结:原码、反码和补码是用于表示带符号整数的三种编码方式。原码表示直观,反码解决了加法问题,而补码不仅解决了加法问题,还能够自然处理负数的表示和溢出问题。在计算机中,补码表示是最常见和有效的带符号整数表示方式。

三元运算符(三目运算符):条件式?值1 : 值2;

    public class Val1 {
   
    public static void main(String[] arg){
   
        boolean b=20<23?true:false;//条件式返回的Boolean值为真
        System.out.println(b);//所以就会返回?后面的第一个值,结果为true
        boolean b1=256<23?true:false;//条件式返回的Boolean值为假
        System.out.println(b1);//所以就会返回?后面的第一个值,结果为false
    }

三目运算符等价于 if ... else 语句

public class Val1 {
   
        public static void main(String[] arg){
   
           boolean a;
           if (23<45)
               a=true;
           else
               a=false;
           System.out.println(a);
        }
}

🎖️数据类型

整型:(Byte short,int,Long)

其中:byte占1个字节(8位) 取值范围 -128~127

​ short占2个字节(16位) 取值范围-32768~32767

​ int占4个字节(32位) 取值范围-21亿4748万3648~21亿4748万3647(Java默认整型类型)

​ Long占8个字节(64位) 取值范围 很大 在声明变量类型是,变量值要加 L 或则 l 作为后缀

浮点型:float,double

float占4个字节(32位) 在声明变量类型时,要在变量值的后面加 F 或 f 作为后缀

double占8个字节(64位) Java默认浮点类型

字符型:用于存储单个字符,在定义字符变量时用单引号表示,char占2个字节(16位),

拓展:引用数据类型
    数组、类、接口、注解、枚举

🎖️进制(常用进制)

十进制:我们日常生活中都是使用的是十进制;日常生活中采用的是十进制进行数据的描述。
==>权重:10^0,10^1,10^2..........
二进制:在计算机底层采用的是二进制对数据进行描述
==>权重:2^0,2^1,2^2,.............
由于在现实生活中数据具有正负数之分,因此呢,二进制中采用最高位来代表符号位。
若是0,代表非负数;若是1,则代表负数;(注意:计算机中一般都是32位或64位的二进制数)

进制之间的转换(这个是计算机底层的原理,尽量掌握)
(1)正十进制转换二进制的方法:
a:除2取余法:使用十进制的数字不断除以2,直到商为0时,将余数逆序排序即可
b:拆分法(自己的理解):将十进制的整数拆分为若干个二进制权重的和,若有该权重下面写1,没有该权重下面写0;
(2)正二进制转十进制的方法:
a:加权法:将二进制的每个数字乘以当前位的权重,加起来,就取到了十进制的数字;
(3)负的十进制转二进制:
a:取绝对值法:将负数的绝对值进行转换二进制,然后进行按位取反再加1;
(4)负二进制转10进制:
a:先减一,然后按位取反,符号位不变,最后按加权法求出结果加负号

`c 计算机存储使用的是二进制的补码,要牢记哦

相关文章
|
1月前
|
存储 Java
Java基础(二):原码、反码、补码及进制之间的运算
Java基础(二):原码、反码、补码及进制之间的运算
80 13
Java基础(二):原码、反码、补码及进制之间的运算
|
8天前
|
存储 缓存 Java
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
33 3
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
|
3月前
|
监控 Java API
如何使用Java语言快速开发一套智慧工地系统
使用Java开发智慧工地系统,采用Spring Cloud微服务架构和前后端分离设计,结合MySQL、MongoDB数据库及RESTful API,集成人脸识别、视频监控、设备与环境监测等功能模块,运用Spark/Flink处理大数据,ECharts/AntV G2实现数据可视化,确保系统安全与性能,采用敏捷开发模式,提供详尽文档与用户培训,支持云部署与容器化管理,快速构建高效、灵活的智慧工地解决方案。
|
1月前
|
Oracle Java 关系型数据库
Java基础(一):语言概述
Java基础(一):语言概述
55 15
Java基础(一):语言概述
|
1月前
|
存储 Java 测试技术
Java基础(三):八种基本数据类型
Java基础(三):八种基本数据类型
81 12
Java基础(三):八种基本数据类型
|
8天前
|
缓存 Java 应用服务中间件
java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-api/captchaImage 404 (Not Found) 如何处理-解决方案优雅草卓伊凡
java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-api/captchaImage 404 (Not Found) 如何处理-解决方案优雅草卓伊凡
36 5
|
2月前
|
存储 Java
java中的常见运算符的计算方式
本文介绍了计算机中二进制数的原码、反码和补码的概念及其转换方式。原码是符号位加真值的绝对值;反码中正数不变,负数其余位取反;补码在反码基础上加1。文章还详细解释了Java中的常见运算符(如按位与、或、异或、移位等)如何基于二进制进行计算,并探讨了使用补码的原因,包括统一符号位处理和扩展表示范围。通过具体代码示例帮助理解这些概念。
java中的常见运算符的计算方式
|
2月前
|
存储 缓存 安全
Java中的数据类型
Java语言提供了八种基本类型,分为4类8种:六个数值型(四个整数型byte、short、int、long,两个浮点型float、double)、一个字符型char和一个布尔型boolean。每种基本类型有固定的位数、取值范围及默认值。此外,还存在`void`类型,但无法直接操作。基本类型支持隐式和显式类型转换,并有对应的包装类如`Integer`、`Double`等,用于在需要对象的场景中使用。包装类支持自动装箱与拆箱机制,简化了基本类型与引用类型的转换,但需要注意性能和空指针异常等问题。
Java中的数据类型
|
1月前
|
存储 监控 算法
探秘局域网桌面监控:深入剖析 Java 语言核心算法
在数字化办公时代,局域网桌面监控如同企业的“智慧鹰眼”,确保工作效率与数据安全。本文以Java为载体,揭示哈希表在监控中的关键应用。通过高效的数据结构和算法,哈希表能快速索引设备连接信息,大幅提升监控的时效性和响应速度。代码示例展示了如何用Java实现设备网络连接监控,结合未来技术如AI、大数据,展望更智能的监控体系,助力企业在数字化浪潮中稳健前行。
|
3月前
|
Java
Java基础之数据类型
Java基础之数据类型
32 6