Java基础语法01——变量与运算符

本文是对Java基础语法的第一部分的学习,包括注释;标识符的命名规则与规范;变量的数据类型分类以及转换;以及六种运算符(算术、赋值、比较、逻辑、三元和位运算符)。

注释(commment)

书写注释是一种良好的习惯,注释是写给人看的,并不会在代码运行时展示出来。注释主要分为以下三类:单行注释、多行注释、文档注释

  1. 单行注释:一行,格式://

  2. 多行注释:一段,格式:/* 注释文字 */

  3. 文档注释:是专门为了用javadoc工具自动生成文档而写的注释,它是一种带有特殊功能的注释。

    ​ 格式:/** 文字 */ (这一部分还有很多需要扩展学习的地f方)

标识符

identifier在Java中,有很多需要自己起名字的地方,而这些就被称为标识符。

用来命名:类名、变量名、方法名、包名、接口名、常量名等。

  • 标识符命名规则:【必须遵循,否则会报错】

    1. 首字母只能以英文字母大小写、$、下划线(_)开始
    2. 首字母之后可以是英文字母大小写、$、下划线(_)或数字的任意组合
    3. 标识符的命名是大小写敏感的
    4. 不能使用关键字(被java语言赋予了特殊含义,用作专门用途的字符串,所有字母全部是小写的),但可以包含
    5. 可以使用中文命名,但是一般不建议使用
  • Java标识符的命名规范:【非必须遵守,但是一种良好的代码习惯】

    1. 类名、接口名:多单词组成时,每个单词的首字母大写:XxxYyyZzz
    2. 变量名、方法名:首个单词全部小写,其余单词首字母大写:xxxYyyZzz
    3. 包名:所有字母都小写:xxxyyyzzz
    4. 常量名:所有字母都大写且每个单词用下划线连接:XXX_YYY_ZZZ
  • 合法标识符举例:age、$salary、_value、__1_value

  • 非法标识符举例:123abc、-salary

变量

  • Java是一种强类型语言,即所有的变量都必须严格符合规定,所有变量都必须先定义再使用
  • 变量的定义格式:数据类型 变量名 = 值;
  • 变量只在它的作用域内有效,一般作用域是{}
  • 在一个作用域内不能声明重名的多个变量

数据类型

数据类型分为基本数据类型和引用数据类型两种

  • 整数类型:byte(1字节=8bit)、short(2字节)、int(4字节)、long(8字节)

​ byte范围:-128~127

​ 定义long类型时,变量的值后要加L或l,例如:long l = 1000000L

​ 整数类型常量默认为int型

  • 浮点类型:float(4字节,但其表示的数范围比long大)、double(8字节)

​ 定义float类型时,变量的值后要加F或f,例如:float f = 100.1f

​ 浮点类型常量默认为double型

  • 字符型:char(1字符=2字节)

​ 声明char类型时,使用一对单引号(‘ ’)进行赋值,只能对一个字符进行赋值

​ 表示方法:(1)表示一个字符(2)转义字符{\n——换行符,\t——制表符}(3)使Unicode字符集表 示字符{eg:\u0043——C}

  • 布尔类型:boolean,只有true\false两个值,常常用在条件判断和循环结构中

  • 拓展:\\n运行时会输出\n(不再表示换行的意义);"\"可以将符号变成普通的字符

类型转换

  • 首先知道一下基本数据类型容量大小的顺序:byte、short、char——>int——>long——>float——>double(顺序由低容量到高容量)(此处容量大小,指的是类型的数据的范围大小)
  • 类型转换有两种类型:自动转换、强制转换(注意:不包括布尔类型)
    1. 自动转换:低——高
    2. 强制转换:高——低,需使用强转符:(强转类型)变量名 【可能导致精度损失】
    3. 举例:
//强转类型举例
public class Demo01{
public static void main(String[] args){
double d1 = 129.4;
int i1 = (int)d1;//将double型强转为int型
System.out.println(i1);//运行结果为129
}
}
//自动提升类型举例
public class Demo02{
public static void main(String[] args){
byte b1 = 12;
char c1 = 'a';
int i1 = 129; int i2 = b1 + c1;//byte\char\short互相做运算或自身做运算时,都将自动转换成int类型
int i3 = b1 + i1;//当容量大的和容量小的做运算时,结果为容量大的类型
System.out.println(i2);//int型——12+97
System.out.println(i3);//int型——12+129
}
}

拓展1——String字符串类型

  • 属于引用数据类型
  • 声明String类型时,使用一对双引号,表示字符串
  • String类型可以与其他8中基本类型做运算,且只能是连接运算:+,运算结果仍为String类型

拓展2——不同进制间的转换(了解)

所有数字在计算机底层都以二进制存在

二进制(以0b或0B开头)、十进制、八进制(以0开头)、十六进制(以0x或0X开头,用0-9及A-F[16]表示)

public class Test1{
public static void main(String[] args){
int num1 = 0b110;//二进制???为啥这条运行不了???
int num2 = 123;//十进制
int num3 = 0127;//八进制
int num4 = 0x123A;//十六进制
System.out.println("num1 = " + num1);
System.out.println("num2 = " + num2);
System.out.println("num3 = " + num3);
System.out.println("num4 = " + num4);
}
}

运算符

算术运算符

算术运算符包括正负号(+、-)、加减乘除(+、-、*、/)、取模(取余)(%)、++(前++、后++)、--(前--、后--)

通过下面的程序代码解释相关的运算(正负号和加减乘比较简单就不说了):

  • //除法运算
    public class Demo01{
    public static void main(String[] args){
    int num1 = 12;
    int num2 = 7;
    int num3 = num1 / num2;
    System.out.println("num3 = " + num3);//1 double num4 = num1/num2;//自动类型提升为double
    System.out.println("num4 = " + num4);//1.0 double num5 = num1/num2+0.0;
    System.out.println("num5 = " + num5);//1.0 double num6 = num1/(num2+0.0);
    System.out.println("num6 = " + num6);//1.714...(除不尽)
    }
    }
    //掌握住基本数据类型运算的本质
  • //取余运算
    public class Domo02{
    public static void main(String[] args){
    int i1 = 12;
    int i2 = 5;
    System.out.println("i1%i2 = " + i1%i2);//2 int ii1 = -12;
    int ii2 = 5;
    System.out.println("ii1%ii2 = " + ii1%ii2);//-2 int iii1 = 12;
    int iii2 = -5;
    System.out.println("iii1%iii2 = " + iii1%iii2);//2 int iiii1 = -12;
    int iiii2 = -5;
    System.out.println("iiii1%iiii2 = " + iiii1%iiii2);//-2
    //取模结果的符号于被取模数相同
    }
    }
  • //前++(--):先自增(减)1.后做运算
    //后++(--):先做运算,后自增(减)1
    public class Demo03{
    public static void main(String[] args){
    int a = 5;
    int b = ++a;
    System.out.println("a="+a+",b="+b);//a=6,b=6 b = a++;
    System.out.println("a="+a+",b="+b);//a=7,b=6 b = --a;
    System.out.println("a="+a+",b="+b);//a=6,b=6 b = a--;
    System.out.println("a="+a+",b="+b);//a=5,b=6
    }
    }
    //自增运算不改变 变量的数据类型

赋值运算符

赋值运算符号:=

扩展赋值运算符:+=、-=、*= 、/=、%=

//+=(其余的类似)
public class Demo04{
public static void main(String[] args){
int i1 = 7;
i1 += 2;//相当于i1=i1+2
System.out.println(i1);//9 short i2 = 7;
//i2 = i2 + 2;//编译失败,因为数据类型
i2 += 2;//结论:不会改变变量的数据类型
System.out.println(i2);//9 int i3 = 1;
i3 *= 0.2;//i3=i3*0.2(注意数据类型是整型的)
System.out.println(i3);//0
i3 += 1;//i3=i3+1
System.out.println(i3);//1
}
}
/*
1. 在开发中,使得整数+2的方法:
num=num+2;
num+=2;(推荐)
2. 在开发中,使得整数+1的方法:
num=num+1;
num+=1;
num++;(推荐)
*/

比较运算符

比较运算符:==、!=、<、>、<=、>=、instanceof

比较运算符的结果都是布尔类型:true或false

//注意区分好==和=
public class Demo05{
public static void main(String[] args){
boolean b1 = true;
boolean b2 = false;
System.out.println(b2 == b1);//false
System.out.println(b2 = b1);//true
}
}

逻辑运算符

  • 逻辑运算符:&(逻辑与)、&&(短路与)、|(逻辑或)、||(短路或)、!(逻辑非)、^(逻辑异或)
  • 逻辑运算符两边操作的都是布尔类型的变量
  • 区分:&和&&(二者的运算结果相同,只是运行过程不同)【|、||的区分类似】

​ &:左右两边都运行

​ &&:如果左边的值可以判断出整体的值,那么右边的就不再运行

//举例说明两者区别
public class Demo05{
public static void main(String[] args) {
boolean b1=false;
int n1 =10;
if(b1 & (n1++ >0)){
System.out.println("我在北京");
}else{
System.out.println("我在南京");
}
System.out.println("n1=" + n1);
//我在南京
n1=11
boolean b2=false;
int n2 =10;
if(b2 && (n2++ >0)){
System.out.println("我在北京");
}else{
System.out.println("我在南京");
}
System.out.println("n2=" + n2);
//我在南京
n1=10
}
}

位运算符

(了解即可,平时用到的不太多)

  • 位运算符:<<(左移)、>>(右移)、>>>(无符号右移)、&(与)、|(或)、^(异或)、~(取反)

  • 位运算符运算的是整数的二进制,操作的是整数

  • 左移<<:将整数的二进制数整体向左移,在空缺位补0【规律:<<n(左移n位) = 相当于原数乘2^n】

    右移>>:将整数的二进制数整体向右移,如果原整数为正数,则在空缺位补0;若为负数,则补1【规律:<<n(右移n位) = 相当于原数除以2^n】

    无符号右移>>>:右移,补0

  • 与运算&:12&5——写成二进制——只有都是1才1,其余情况是0——结果:4

    ​ 00001100——12

    ​ 00000101——5

    ​ 00000100——4

    或运算|:12|5——写成二进制——只要有一个1就是1——结果:13

    ​ 00001100——12

    ​ 00000101——5

    ​ 00001101——13

    异或运算:125——写成二进制——两者不相同就是1——结果:9

    ​ 00001100——12

    ​ 00000101——5

    ​ 00001001——9

    取反运算12——写成二进制——包括最高位按位取反

    ​ 00001100——12

    ​ 11110011—— -13

三元运算符

  • 三元运算符结构:(条件表达式)?表达式1:表达式2

  • 注意几点:条件表达式的结果须是布尔类型

​ 若条件表达式的结果为true,则执行表达式1;若条件表达式的结果为false,则执行表达式2

​ 表达式1与表达式2的值要求可以统一为一个数据类型

Java基础语法01——变量与运算符的更多相关文章

  1. JAVA学习(三):Java基础语法(变量、常量、数据类型、运算符与数据类型转换)

    Java基础语法(变量.常量.数据类型.运算符与数据类型转换) 1.变量 Java中.用户能够通过指定数据类型和标识符来声明变量.其基本的语法为: DataType identifier; 或 Dat ...

  2. 005 01 Android 零基础入门 01 Java基础语法 01 Java初识 05 Eclipse简介

    005 01 Android 零基础入门 01 Java基础语法 01 Java初识 05 Eclipse简介 Eclipse是一款集成开发工具--IDE. 集成开发环境(IDE,Integrated ...

  3. 003 01 Android 零基础入门 01 Java基础语法 01 Java初识 03 Java程序的执行流程

    003 01 Android 零基础入门 01 Java基础语法 01 Java初识 03 Java程序的执行流程 Java程序长啥样? 首先编写一个Java程序 记事本编写程序 打开记事本 1.wi ...

  4. Java基础语法(2)-变量

    title: Java基础语法(2)-变量 blog: CSDN data: Java学习路线及视频 1.什么是变量? 变量的概念 内存中的一个存储区域 该区域的数据可以在同一类型范围内不断变化 变量 ...

  5. 006 01 Android 零基础入门 01 Java基础语法 01 Java初识 06 使用Eclipse开发Java程序

    006 01 Android 零基础入门 01 Java基础语法 01 Java初识 06 使用Eclipse开发Java程序 Eclipse下创建程序 创建程序分为以下几个步骤: 1.首先是创建一个 ...

  6. 004 01 Android 零基础入门 01 Java基础语法 01 Java初识 04 Java程序的结构

    004 01 Android 零基础入门 01 Java基础语法 01 Java初识 04 Java程序的结构 Java程序的结构 Java程序外层--类 程序外层,如下面的代码,是一个类的定义. c ...

  7. 002 01 Android 零基础入门 01 Java基础语法 01 Java初识 02 Java简介

    002 01 Android 零基础入门 01 Java基础语法 01 Java初识 02 Java简介 学习Java的基础语法 Java是一门编程语言,学习的逻辑其实和现实世界的语言是一样的,需要了 ...

  8. 001 01 Android 零基础入门 01 Java基础语法 01 Java初识 01 导学

    001 01 Android 零基础入门 01 Java基础语法 01 Java初识 01 导学 welcome to Java World 欢迎来到Java世界 一起领略Java编程世界的奥秘与奥妙 ...

  9. Java基础二(变量、运算符)

    1.变量2.运算符 ###01变量概述 * A: 什么是变量? * a: 变量是一个内存中的小盒子(小容器),容器是什么?生活中也有很多容器,例如水杯是容器,用来装载水:你家里的大衣柜是容器,用来装载 ...

随机推荐

  1. MongoDB 事务机制

    MongoDB 从4.0 版本开始 副本集支持多文档事务,4.2 版本开始分片集群也支持多文档事务.单个集合的单个文档事务 在 1.x 就支持. 以下是跟 mongo 事务相关的一些概念: 1. Wr ...

  2. RandomStringUtils 生成随机字符串

    代码: System.out.println(RandomStringUtils.randomAlphanumeric(32));System.out.println(RandomStringUtil ...

  3. ES6-ES12部分简单知识点总结,希望对大家有用~

    ES6-ES12简单知识点总结 1.ES6相关知识点 1.1.对象字面量的增强 ES6中对对象字面量的写法进行了增强,主要包含以下三个方面的增强: 属性的简写:当给对象设置属性时,如果希望变量名和属性 ...

  4. Java中的序列化Serialable

    Java中的序列化Serialable https://blog.csdn.net/caomiao2006/article/details/51588838

  5. DWR是什么?有什么作用?

    DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站. 它可以允许在浏览器里的代码使用运行 ...

  6. 如何使用 Spring Boot 实现分页和排序?

    使用 Spring Boot 实现分页非常简单.使用 Spring Data-JPA 可以实现将可分页的传递给存储库方法.

  7. spring boot 自动装配的原理

    参考: https://blog.csdn.net/Dongguabai/article/details/80865599.如有侵权,请联系本人删除! 入口: import org.springfra ...

  8. 学习FastDfs(一)

    一.简介 FastDFS是一个开源的轻量级分布式文件系统,由跟踪服务器(tracker server).存储服务器(storage server)和客户端(client)三个部分组成 fastfds有 ...

  9. 从零开始开发一款H5小游戏(三) 攻守阵营,赋予粒子新的生命

    本系列文章对应游戏代码已开源 Sinuous game. 每个游戏都会包含场景和角色.要实现一个游戏角色,就要清楚角色在场景中的位置,以及它的运动规律,并能通过数学表达式表现出来. 场景坐标 canv ...

  10. 简单的多选框选择功能js代码

    最近没事写了个特别基础的多选框功能代码,代码如下:js部分: //获取所有class为checkbox的多选按钮(需要以下功能需要先写出对应功能的元素). var checkBoxList = doc ...