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 计算机存储使用的是二进制的补码,要牢记哦

相关文章
|
2月前
|
存储 人工智能 算法
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
这篇文章详细介绍了Dijkstra和Floyd算法,这两种算法分别用于解决单源和多源最短路径问题,并且提供了Java语言的实现代码。
90 3
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
|
29天前
|
SQL 安全 Java
安全问题已经成为软件开发中不可忽视的重要议题。对于使用Java语言开发的应用程序来说,安全性更是至关重要
在当今网络环境下,Java应用的安全性至关重要。本文深入探讨了Java安全编程的最佳实践,包括代码审查、输入验证、输出编码、访问控制和加密技术等,帮助开发者构建安全可靠的应用。通过掌握相关技术和工具,开发者可以有效防范安全威胁,确保应用的安全性。
48 4
|
1月前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
52 4
|
28天前
|
存储 消息中间件 NoSQL
使用Java操作Redis数据类型的详解指南
通过使用Jedis库,可以在Java中方便地操作Redis的各种数据类型。本文详细介绍了字符串、哈希、列表、集合和有序集合的基本操作及其对应的Java实现。这些示例展示了如何使用Java与Redis进行交互,为开发高效的Redis客户端应用程序提供了基础。希望本文的指南能帮助您更好地理解和使用Redis,提升应用程序的性能和可靠性。
35 1
|
2月前
|
算法 Java 测试技术
🌟Java 零基础 | 详解 单目运算符
【10月更文挑战第14天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
47 7
|
2月前
|
Java 测试技术 开发者
🌟Java 零基础 | 深入理解三目运算符
【10月更文挑战第13天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
28 3
|
2月前
|
存储 Java 关系型数据库
[Java]“不同族”基本数据类型间只能“强转”吗?
本文探讨了不同位二进制表示范围的计算方法,重点分析了Java中int和char类型之间的转换规则,以及float与int类型之间的转换特性。通过具体示例说明了显式和隐式转换的条件和限制。
38 0
[Java]“不同族”基本数据类型间只能“强转”吗?
|
2月前
|
Java 测试技术 开发者
🌟Java零基础-Lambda运算符详解 🌟
【10月更文挑战第12天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
26 1
|
2月前
|
Java 程序员 编译器
在Java编程中,保留字(如class、int、for等)是具有特定语法意义的预定义词汇,被语言本身占用,不能用作变量名、方法名或类名。
在Java编程中,保留字(如class、int、for等)是具有特定语法意义的预定义词汇,被语言本身占用,不能用作变量名、方法名或类名。本文通过示例详细解析了保留字的定义、作用及与自定义标识符的区别,帮助开发者避免因误用保留字而导致的编译错误,确保代码的正确性和可读性。
55 3
|
2月前
|
移动开发 Java 大数据
深入探索Java语言的核心优势与现代应用实践
【10月更文挑战第10天】深入探索Java语言的核心优势与现代应用实践
84 4