JAVA表达式

news2024/11/29 0:38:49

1.Java开发工具

  • IntelliJ IDEA被认为是目前Java开 发效率最快的IDE工具。是 JetBrains公司的产品,这家公司 总部位于捷克共和国的首都布拉格。 它整合了开发过程中实用的众多功 能,智能提示错误,强大的调试工 具,Ant,JavaEE支持,CVS整合, 最大程度的加快开发的速度。简单 而又功能强大。与其他的一些繁冗 而复杂的IDE工具有鲜明的对比。

Intellij IDEA

2. 标识符

2.1 标识符定义(Identifier)

  • 在编程语言中,标志符就是程序员自己规定的具有特定含义的词,比如类名称、方法名称、属性名称、变量名等。

2.2 命名规则

  1. 标识符由字母(包括中文)、数字、下划线_和美元符号$组成

  2. 不能以数字开头

  3. 不能是关键字和保留字,但是可以包含关键字和保留字

  4. Java严格区分大小写

  5. 标识符可以为任意长度,但标识符不能包含空格

  • 注意:在起名字时,为了提高阅读性,要尽量有意义,“见名知意”。

  • 注意:java采用unicode字符集,因此标识符也可以使用汉字声明,但是不建议使用。

2.3 常用规范

  • 包名:全部小写,用.隔开,每一个点表示一级目录,至少要有一级目录。

    • 单级包:小写。如:com

    • 多级包:小写,用.隔开。如:com.codingfuture

  • 类或接口:所有单词首字母大写。(大驼峰法)

    • 一个单词:首字母大写。如:StudentPeople

    • 多个单词:每个单词首字母大写。如:HelloWorldServerSocket

  • 方法或变量:第一个单词首字母小写,从第二个单词开始首字母大写。(小驼峰法)

    • 一个单词:首字母小写。如:nameage

    • 多个单词:第二个单词首字母大写。如:stuNameshowTime

  • 常量:全部大写,单词间以下划线_隔开.

    • 一个单词:全大写。如:PICOUNT

    • 多个单词:全大写,并以_隔开。如:RESULT_OKWINDOW_HIERARCHY_TAG

*详细规范见《阿里巴巴Java开发手册》第一章

2.4 关键字和保留字

abstractassertbooleanbreakbyte
casecatchcharclassconst
continuedefaultdodoubleelse
enumextendsfinalfinallyfloat
forgotoifimplementsimport
instanceofintinterfacelongnative
newpackageprivateprotectedpublic
returnstrictfpshortstaticsuper
switchsynchronizedthisthrowthrows
transienttryvoidvolatilewhile

3. 常量与变量

3.1 常量

  • 在程序运行过程中,其值不可以发生改变的量,称为常量。

  • 常量(字面量)分类:

    • 字符串常量:用双引号括起来的内容。"Hello, World!""码上未来"

    • 整数常量:不带小数的数字。666-88

    • 小数常量:带小数的数字。13.14-5.21

    • 字符常量:用单引号括起来的内容。 'A''o''我'

    • 布尔常量:布尔值,表示真假。truefalse

    • 空常量:一个特殊的值,空值。null

    • 不可修改的变量:用final关键字修饰的变量,只能赋值一次,不可修改。

      final int A = 1;

3.2 变量

  • 在程序运行过程中,其值可以发生改变的量,称为变量。

  • Java中定义变量的格式是 数据类型 变量 = 值

  • va r 变量 = 10 js. 动态语言

  • 先声明,后赋值

  • int a; // 声明
    a = 1; // 赋值

    声明时赋值

  • int a = 1; // 声明时赋值

    对变量值进行修改

  • int a = 1; // 初始化变量
    a = 2; // 修改变量值

    4. 数据类型

    4.1 计算机存储单元

  • 我们知道计算机是可以用来存储数据的,但是无论是内存还是硬盘,计算机存储设备的最小信息单元叫“位(bit)”,我们又称之为“比特位“ ,通常用小写的字母"b"表示。

  • 而计算机中最小的存储单元叫”字节(byte)“,通常用大写字母"B"表示,字节是由连续的8个位组成。

  • 除了字节外还有一些常用的存储单位:

  • 1B (字节) = 8bit

  • 1KB = 1024B

  • 1MB = 1024KB

  • 1GB = 1024MB

  • 1TB = 1024GB

  • 1PB = 1024TB

4.2 数据类型

  • Java语言是强类型语言,对于每一种数据都给出了明确的数据类型,不同的数据类型也分配了不同的内存空间,所以它们表示的数据大小也是不一样的。

image-20230130104342636

  • 基本数据类型:(primitive type)

名称数据类型数据类型位数默认值最小值最大值
字节型byte1字节(8位)0-2^7. -1282^7-1. 127
短整型short2字节(16位)0-2^152^15-1
整型(默认)int4字节(32位)0-2^312^31-1(约21亿)
长整型long8字节(64位)0L-2^632^63-1
单精度浮点型float4字节(32位)0.0f-3.403E383.403E38
双精度浮点型(默认)double8字节(64位)0.0d-1.798E3081.798E308
字符型char2字节(16位)'u0000'02^16-1
布尔型boolean未知false
  • 引用数据类型:(reference type)

    类:class (字符串放在这里)

    接口:interface

    数组:array []

4.3数据类型特殊说明

  • 整数类型:byte、short、int、long

    java各整数类型有固定的表数范围和字段长度,不受具体OS的影响,以保 证java程序的可移植性。

    java的整型常量默认为 int 型,声明long型常量须后加‘l’或‘L’

    java程序中变量通常声明为int型,除非不足以表示较大的数,才使用long

  • byte a = 127;
    short b = 128;
    int c = 1000;
    long d = 1000l;

  • 浮点类型:float、double

    与整数类型类似,Java 浮点类型也有固定的表数范围和字段长度,不受具体操作系统的影响。

    浮点型常量有两种表示形式

    十进制数形式:如:5.12 512.0f .512 (必须有小数点)

    科学计数法形式:如:5.12e2 512E2 100E-2

    float:单精度,尾数可以精确到7位有效数字。很多情况下,精度很难满足需求。

    double:双精度,精度是float的两倍。通常采用此类型。

    Java 的浮点型常量默认为double型,声明float型常量,须后加‘f’或‘F’。

  • float f = 123f;
    double d = 123.456d;
    System.out.println(f);
    System.out.println(d);

  • 字符类型:char

    char 型数据用来表示通常意义上“字符”(2字节)

    Java中的所有字符都使用Unicode编码,故一个字符可以存储一个字母,一个汉字,或其他的一个字符。

    字符型变量的三种表现形式:

    字符常量是用单引号(‘ ’)括起来的单个字符。例如:char c1 = 'a'; char c2 = '中'; char c3 = '9';

    Java中还允许使用转义字符‘\’来将其后的字符转变为特殊字符型常量。 例如:char c3 = ‘\n’;

    直接使用 Unicode 值来表示字符型常量:‘\uXXXX’。其中XXXX代表 一个十六进制整数。如:\u0043 表示 c

    char类型是可以进行运算的。因为它都对应有Unicode码。

  • char c1 = '张';
    char c2 = '0';
    char c3 = '\n';
    char c4 = '\u0043';
    System.out.println(c4);

  • 布尔类型:boolean

    boolean 类型用来判断逻辑条件,一般用于程序流程控制:

    boolean类型数据只允许取值true和false,无null。

    不可以使用0或非 0 的整数替代false和true,这点和C语言不同。

    java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达所操作的 boolean值,在编译之后都使用java虚拟机中的int数据类型来代替:true用1表示,false 用0表示。

  • boolean yes = true;
    boolean no = false;

    4.4 数据类型转换

  • 自动类型转换 ==>容量小的类型自动转换为容量大的数据类型。

    • 如果一个操作数为double型,则整个表达式可提升为double型。

    • 有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的 那种数据类型,再进行计算。

      byte,short,char之间不会相互转换,他们三者在计算时首先转换为int类型。

      boolean类型不能与其它数据类型运算。

    •  int a = 100;
        long b = 200;
        b = a + b;
        System.out.println(b);
      
      计算下列结果?
        int a = 123;
        double d = a + 123;
        System.out.println(d);
        int b = a /300;
        System.out.println(b);

      强制类型转换

    • 条件:转换的数据类型必须是兼容的

    • 格式:(数据类型) 变量 , (数据类型) 是强制类型转换后的数据类型。例:

    •  double d = 123.456d;
              System.out.println(d);
              int i = d;// 编译不通过
              int i = (int) d;// 截断操作
              System.out.println(i);;
      编码情况1:
      long l1 = 123; // ok
      long l1 = 1234567890123456789; // 编译不通过
      System.out.println(l1);
      float f1 = 12.3; // 编译不通过
      // float f1 =(float) 12.3; 
      编码情况2:
      整型常量,默认类型为int型
      浮点型常量,默认类型为double类型
      byte b = 12;
      byte b1 = b  + 1;// 编译不通过    
      float f1 = b + 12.3;// 编译不通过 
      //  byte b1 = (byte) (b + 1);
      //  float f1 = (float) (b + 12.3);

4.5 作用域

  • 变量起作用的范围,称为作用域。

    • 范围:变量在哪对大括号中声明定义的,范围就是哪对大括号。

    • 在同一个作用域中,不能定义重复的变量。

5. 运算符

5.1 算数运算符

  • 算术运算符用在数学表达式中,它们的作用和在数学中的作用一样。下表列出了所有的算术运算符。

  • 表格中的实例假设整数变量A的值为10,变量B的值为20:

操作符描述例子
+加法:相加运算符两侧的值A + B 等于 30
-减法:左操作数减去右操作数A – B 等于 -10
*乘法:相乘操作符两侧的值A * B 等于 200
/除法:左操作数除以右操作数B / A 等于 2
取余(取模):左操作数除以右操作数的余数B % A 等于 0
++自增:操作数的值增加1B++ 或 ++B 等于 21
--自减:操作数的值减少1B-- 或 --B 等于 19
  • 自增自减运算符

    • 基本使用

    • int a = 5;
      a++;
      System.out.println(a); // 此时a的值为6
      a--;
      System.out.println(a); // 此时a的值为5

      a++++a的区别

    • int a = 5;
      int b = a++;
      System.out.println(a); // 6
      System.out.println(b); // 5
      
      int c = 5;
      int d = ++c;
      System.out.println(c); // 6
      System.out.println(d); // 6
    • a++先赋值后自增

    • ++a先自增后赋值

5.2 关系运算符

  • 下表为Java支持的关系运算符

  • 表格中的实例整数变量A的值为10,变量B的值为20:

运算符描述例子
==检查如果两个操作数的值是否相等,如果相等则条件为真。(A == B)为假
!=检查如果两个操作数的值是否相等,如果值不相等则条件为真。(A != B)为真
>检查左操作数的值是否大于右操作数的值,如果是那么条件为真。(A > B)为假
<检查左操作数的值是否小于右操作数的值,如果是那么条件为真。(A < B)为真
>=检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。(A >= B)为假
<=检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。(A <= B)为真

5.3 逻辑运算符

  • 下表列出了逻辑运算符的基本运算,假设布尔变量A为真,变量B为假

操作符描述例子
&&称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。(A && B)为假
||称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。(A || B)为真
!称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。!(A && B)为真

image-20230130105124442

1.逻辑异或:相同为false,不同为true

2.&”和“&&”的区别

单&时,左边无论真假,右边都进行运算

双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。

“|”和“||”的区别同理,||表示:当左边为真,右边不参与运算。

5.4 赋值运算符

  • 下面是Java语言支持的赋值运算符:

操作符描述例子
=简单的赋值运算符,将右操作数的值赋给左侧操作数C = A + B将把A + B得到的值赋给C
+=加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数C += A等价于C = C + A
-=减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数C -= A等价于C = C - A
*=乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数C *= A等价于C = C * A
/=除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数C /= A,C 与 A 同类型时等价于 C = C / A

5.5 位运算符 (了解)

  • 下表列出了位运算符的基本运算,假设整数变量 A 的值为 60 和变量 B 的值为 13:

操作符描述例子
如果相对应位都是1,则结果为1,否则为0。(A&B),得到12,即 0000 1100
|如果相对应位都是0,则结果为0,否则为1。(A | B)得到61,即 0011 1101
^如果相对应位值相同,则结果为0,否则为1。(A ^ B)得到49,即 0011 0001
按位取反运算符翻转操作数的每一位,即0变成1,1变成0。(〜A)得到-61,即 1100 0011
<<按位左移运算符。左操作数按位左移右操作数指定的位数。A << 2得到240,即 1111 0000
>>按位右移运算符。左操作数按位右移右操作数指定的位数。A >> 2得到15,即 1111
>>>按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。A >>> 2得到15,即 0000 1111
  • 位运算是直接对整数的二进制进行的运算。

  • public static void main(String[] args) {
            int a = 60;                 // 0011 1100
            int b = 13;                 // 0000 1101
            System.out.println(a&b);    // 0000 1100
            System.out.println(a|b);    // 0011 1101
        }
    
    
    public class JavaDemo {
        public static void main(String[] args) {
            /*1.位运算符操作的都是整型的数据
              2.<<在一定范围内,每向左移一位,相当于*2
                >>在一定范围内,每向左移一位,相当于/2
             */
            int i = 21;
            System.out.println("i<<2=" + (i << 2));
            System.out.println("i<<3=" + (i << 3));
            System.out.println("i<<27=" + (i << 27));
            System.out.println("i>>2=" + (i >> 2));
    
        }
    }
  • java中的进制声明

  •  public static void main(String[] args) {
            int a = 0b11;   //声明二进制变量
            int b = 011;    //声明八进制变量
            int c = 11;     //声明十进制变量
            int d = 0xaabb;   //声明十六进制变量
            System.out.println(a);
            System.out.println(b);
            System.out.println(c);
            System.out.println(d);
        }

    5.6 其他运算符

  • 条件运算符(?:)

    条件运算符也被称为三元运算符。

    该运算符有3个操作数,并且需要判断布尔表达式的值。

    该运算符的作用是决定哪个值应该赋值给变量。

  • int a = 10;
    int b = a > 10 ? 10 : 0;
    
    class calc {
    	 public static void main(String[] arg) {
    		int a = 10;
    		int b = 20;
    		int c = 30;
    		int result = (a > b ? a : b) > c ? (a > b ? a : b) : c;
    	  System.out.println(result);
    }
    }

    instanceof 运算符

    该运算符用于操作对象实例,检查该对象是否是一个特定类型(类型或接口类型)。

    如果运算符左侧变量所指的对象,是操作符右侧类或接口(class/interface)的一个对象,那么结果为真。

  • String name = "James";
    boolean result = name instanceof String; // 由于 name 是 String 类型,所以返回真

  • 如果被比较的对象兼容于右侧类型,该运算符仍然返回true。

  • 字符串类型:String

    String不是基本数据类型,属于引用数据类型

    使用方式与基本数据类型一致。例如:String str = “abcd”;

    一个字符串可以串接另一个字符串,也可以直接串接其他类型的数据。

5.7 运算符优先级

  • 算术运算符 > 关系运算符 > 逻辑运算符

  • 复杂的运算需要用小括号()来强制控制运算顺序,可读性强

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1455903.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

nginx upstream server主动健康检测模块添加https检测功能[完整版]

目录 1 缘起1.1 功能定义2. 实现后的效果2.1 配置文件2.2 运行效果3. 代码实现3.1 配置指令3.1.1 配置指令定义:3.1.2 配置指令结构体:3.1.3 配置指令源码定义:3.2 模块的初始化3.3 添加新的健康检测类型的定义3.4 握手完成后的处理3. 5 发送http请求3.6 接收http响应3.7 连…

GaiaDB-X 获选北京国家金融科技认证中心「数据领域首批专项示范与先行单位」

2023 年 12 月 21 日至 22 日&#xff0c;「2023北京国际金融安全论坛暨金融科技标准认证生态大会」在北京金融安全产业园举办。百度智能云分布式数据库 GaiaDB-X 产品荣登「数据领域首批专项示范与先行单位」名单&#xff0c;并获得了由北京国家金融科技认证中心颁发的「数据产…

Vue3快速上手(八) toRefs和toRef的用法

顾名思义&#xff0c;toRef 就是将其转换为ref的一种实现。详细请看&#xff1a; 一、toRef 1.1 示例 <script langts setup name"toRefsAndtoRef"> // 引入reactive,toRef import { reactive, toRef } from vue // reactive包裹的数据即为响应式对象 let p…

error: src refspec main does not match any解决办法

一、问题描述&#xff1a; 用GitHub Actions自动部署Hexo&#xff0c;到了最关键的一步&#xff1b;突然报错&#xff1a;error: src refspec main does not match any 1、错误一&#xff1a; main分支应填写为master分支&#xff1b;但是只改这里也会报其他错误 2、错误二&a…

swagger+javax/xml/bind/DatatypeConverter+aop各种问题

文章目录 一、No operations defined in spec!1.问题图片2.解决方法 二、java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter1.问题图片2.解决方法 三、AOP切点不够精确问题1.问题描述2.解决方案 总结 一、No operations defined in spec! 这是swagger报的错&…

turn服务器debug

turn服务器正常能连通的调用堆栈 turn_port.cc AddRequestAuthInfo check 崩溃 有问题的turn msg type是259 request type 是3 用不了的turn 服务器turnmessage type 275

pytorch tensor合并与分割

目录 1. cat2. stack3. split4. chunk 1. cat torch.cat(tensors, dim0, *, outNone) → Tensor 在指定维度上&#xff0c;连接给定tensor序列或empty&#xff0c;除连接的dimension外&#xff0c;所有得的ensor必须有相同的shape 参数&#xff1a; tensors-具有相同类型的ten…

Visual Studio+C#实现信道与信息率失真函数

1. 要求 设计一款信道与信息率失真函数计算系统&#xff0c;要求如下&#xff1a; 系统能够通过输入的转移概率矩阵计算对称以及非对称离散无记忆信道的信道容量系统能够通过输入的概率分布以及失真矩阵来计算与信息率失真函数有关的相关参数&#xff0c;例如Dmin&#xff0c…

【教程】详解相机模型与坐标转换

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 由于复制过来&#xff0c;如果有格式问题&#xff0c;推荐大家直接去我原网站上查看&#xff1a; 相机模型与坐标转换 - 生活大爆炸 目录 经纬度坐标系 转 地球直角坐标系大地直角坐标系 转 经纬度坐标系地理坐标…

⭐北邮复试刷题589. N 叉树的前序遍历__DFS (力扣每日一题)

589. N 叉树的前序遍历 给定一个 n 叉树的根节点 root &#xff0c;返回 其节点值的 前序遍历 。 n 叉树 在输入中按层序遍历进行序列化表示&#xff0c;每组子节点由空值 null 分隔&#xff08;请参见示例&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [1,null,…

【明道云】如何实现循环处理

【背景】 发现明道云工作流中并没有直接的循环逻辑模块&#xff0c;那么如何实现循环呢&#xff1f; 【方案】 通过主流程获取多条数据&#xff0c;搭配子流程来实现遍历循环效果。子流程中可以直接感应获取单行数据。 如果直接在主流程中通过直接获取方式获取多条数据&…

Linux 进程详解

目录 一、进程创建 二、进程API 1. 进程创建 fork() 2. 等待 wait() 3.执行 exec() 3.1 execlp函数 3.2 execl函数 三、其他API 一、进程创建 上文讲述了进程的概念&#xff0c;现在大家对于进程的定义已经有所了解了&#xff0c;本文主要介绍一下进程的基本信息&a…

Java基于微信小程序的乐室预约小程序,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

15.隐式转换函数的封装

目录 概述实践代码测试 结束 概述 隐式转换函数 类似 java 中的切面编程&#xff0c;对原有类功能做增加。 实践 代码 封装代码如下 package com.fun.scala.demoimport java.io.File/*** 类似java切面的东东*/ object ImplicitAspect {implicit def man2SuperMan(man: Man):…

前端新手Vue3+Vite+Ts+Pinia+Sass项目指北系列文章 —— 第十二章 常用工具函数 (Utils配置)

前言 在项目开发中&#xff0c;我们经常会使用一些工具函数&#xff0c;也经常会用到例如loadsh等工具库&#xff0c;但是这些工具库的体积往往比较大&#xff0c;如果项目本身已经引入了这些工具库&#xff0c;那么我们就没有必要再引入一次&#xff0c;所以我们需要自己封装…

计算机网络基础入门指南

文章目录 网络分层模型OSI七层模型及其作用TCP/IP四层模型及作用为什么网络需要分层&#xff1f; 常见的网络协议应用层常见的协议传输层常见的协议网络层常见协议 从输入URL到页面展示的过程HTTP常见的状态码HTTP与HTTPS的区别HTTP是不保存状态的协议&#xff0c;如何保存用户…

DoRA(权重分解低秩适应):一种新颖的模型微调方法

来自&#xff1a;小互 DoRA&#xff08;权重分解低秩适应&#xff09;&#xff1a;一种新颖的模型微调方法 DoRA在LoRA的基础上进一步发展&#xff0c;通过将预训练权重分解为“幅度”和“方向”两个部分进行微调。 这种权重分解方法允许DoRA更精细地控制模型的学习过程&…

腾讯云助力酒店IT系统上云,实现出海业务的双重优势

潮起潮涌&#xff0c;随着时代浪潮的翻涌&#xff0c;生活处处可见是巨大的变化&#xff0c;衣食住行都有了更多更大的需求&#xff0c;出门旅游观赏当地风景品尝特色美食的前提是要住好&#xff0c;只有休息好了才有更多的精力去游玩。酒店系统的升级上云让登记变得更加便捷&a…

MAC电脑系统清理空间免费版软件CleanMyMac X2024

大家好&#xff0c;我是那个总是被苹果电脑“内存已满”提示搞得焦头烂额的专业博主。如果你也像我一样&#xff0c;在使用Mac时经常遭遇卡顿、慢吞吞的情况&#xff0c;那么今天的Mac清理空间妙招分享绝对适合你&#xff01; CleanMyMac X全新版下载如下: https://wm.makedi…

JVS智能BI的ETL数据集实践:数据自动化分析的秘诀

数据集是JVS-智能BI中承载数据、使用数据、管理数据的基础&#xff0c;同样也是构建数据分析的基础。可以通俗地将其理解为数据库中的普通的表&#xff0c;它来源于智能的ETL数据加工工具&#xff0c;可以将数据集进行分析图表、统计报表、数字大屏、数据服务等制作。 数据集管…