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

相关文章
|
8月前
|
Java
Java语言实现字母大小写转换的方法
Java提供了多种灵活的方法来处理字符串中的字母大小写转换。根据具体需求,可以选择适合的方法来实现。在大多数情况下,使用 String类或 Character类的方法已经足够。但是,在需要更复杂的逻辑或处理非常规字符集时,可以通过字符流或手动遍历字符串来实现更精细的控制。
495 18
|
8月前
|
存储 Java 索引
用Java语言实现一个自定义的ArrayList类
自定义MyArrayList类模拟Java ArrayList核心功能,支持泛型、动态扩容(1.5倍)、增删改查及越界检查,底层用Object数组实现,适合学习动态数组原理。
351 4
|
8月前
|
Java Go 开发工具
【Java】(4)五种运算符的说明(&&、||、>=、>、<=、<)、4种控制语句(if、for、while、dowhile)、输入和输出说明
扩展类的赋值运算符不改变运算结果类型,假设最初这个变量的的类型byte类型,无论怎么进行加或追减,最终该变量的数据类型还是byte类型。注:一个表达式中有多个运算符,运算符有优先级,不确定的加小括号,优先级得到提升。当布尔表达式的结果是false的时候,选择表达式2作为整个表达式的执行结果。当布尔表达式的结果是true的时候,选择表达式1作为整个表达式的执行结果。当用户输入的时候,并且最终敲回车键的时候,键入的信息会自动赋值给a。并且,连接运算之后的结果还是一个字符串类型。表达式1 : 表达式2。
282 2
|
8月前
|
存储 Java Go
【Java】(3)8种基本数据类型的分析、数据类型转换规则、转义字符的列举
牢记类型转换规则在脑海中将编译和运行两个阶段分开,这是两个不同的阶段,不要弄混!
363 2
|
8月前
|
Java Go 开发工具
【Java】(2)Java数据类型阐述、基本数据类型的占用和范围、二进制的讲述
数据的一种表示形式。十进制表示满十进一原则。二进制表示满二进一原则。例如:十进制例如:二进制计算机在任何情况下都只能识别二进制。
384 1
|
9月前
|
安全 Java
使用Java多态性进行数据类型转换
以上示范了如何通过多态性来执行安全有效地对于Java对象间相互之间进行正确方式与场合下正确格式与条件限定内对于各个层级关系内部成员及其功能调取与应有操作处理过程,并通过 `instanceof`关键字确保了程序运行期间遵循逻辑合理并符合预设规则条件限定内正常工作流程而无需担忧潜藏风险问题出现可能带来影响结果质量问题情况存在可能。
264 12
|
9月前
|
存储 Java Apache
Java语言操作INI配置文件策略
以上步骤展示了基本策略,在实际项目中可能需要根据具体需求进行调整优化。例如,在多线程环境中操作同一份配置时需要考虑线程安全问题;大型项目可能还需考虑性能问题等等。
352 15
|
10月前
|
存储 缓存 算法
Java数据类型与运算符深度解析
本文深入解析Java中容易混淆的基础知识,包括八大基本数据类型(如int、Integer)、自动装箱与拆箱机制,以及运算符(如&与&&)的使用区别。通过代码示例剖析内存布局、取值范围及常见陷阱,帮助开发者写出更高效、健壮的代码,并附有面试高频问题解析,夯实基础。
|
10月前
|
算法 Java
Java语言实现链表反转的方法
这种反转方法不需要使用额外的存储空间,因此空间复杂度为,它只需要遍历一次链表,所以时间复杂度为,其中为链表的长度。这使得这种反转链表的方法既高效又实用。
663 0
|
存储 Java
# 【Java全栈学习笔记-U1-day02】变量+数据类型+运算符
本篇笔记主要围绕Java全栈学习的第二天内容展开,涵盖了变量、数据类型、运算符以及Scanner类的应用。首先介绍了变量的概念与命名规范,以及如何定义和使用变量;接着详细讲解了Java中的基本数据类型,包括整型、浮点型、字符型、布尔型等,并通过实例演示了数据类型的运用。随后,深入探讨了各类运算符(赋值、算术、关系、逻辑)及其优先级,帮助理解表达式的构成。最后,介绍了如何利用Scanner类实现用户输入功能,并通过多个综合示例(如计算圆面积、购物打折、变量交换及银行利息计算)巩固所学知识。完成相关作业将进一步加深对这些基础概念的理解与实践能力。
293 13