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. 学习HashMap源码

    HashMap简介 ​ HashMap是一种存储K-V类型的容器,HashMap底层数据结构为数组+链表+红黑树(jdk 1.8新增),它根据键的HashCode值存储数据,获取元素的时间复杂度为O( ...

  2. Spring系列26:Spring AOP 通知与顺序详解

    本文内容 如何声明通知 如何传递参数到通知方法中 多种通知多个切面的通知顺序 多个切面通知的顺序源码分析与图解 声明通知 Spring中有5种通知,通过对应的注解来声明: @BeforeBefore ...

  3. 在kali中安装两个版本的python

    在kali中安装两个版本的python 在kali中已经预装了两个版本的python,但是没有装pip(>︿<). 这时使用python或者python3表示python3:使用pytho ...

  4. NaviCat连接提示驱动程序IM004错误

    今天一打开NaviCat提示驱动程序IM004错误,百度了好几种方法都不起作用,多次尝试后总结出一套方法: 一.到控制面板--卸载程序--卸载NaviCat Clien 注意可能有多个版本的,2008 ...

  5. async-validator 源码学习笔记(四):validator

    系列文章: 1.async-validator 源码学习(一):文档翻译 2.async-validator 源码学习笔记(二):目录结构 3.async-validator 源码学习笔记(三):ru ...

  6. Windows10与Centos7双系统安装踩的坑

    1. 首先安装windows(太简单不说了) 2.然后安装Centos7(太简单不说了) 3.注意:安装完Centos7重启电脑进入系统引导项突然发现没有Windows引导项 0x06 恢复Windo ...

  7. 简单描述 MySQL 中,索引,主键,唯一索引,联合索引 的区别,对数据库的性能有什么影响(从读写两方面) ?

    索引是一种特殊的文件(InnoDB 数据表上的索引是表空间的一个组成部分),它们 包含着对数据表里所有记录的引用指针. 普通索引(由关键字 KEY 或 INDEX 定义的索引)的唯一任务是加快对数据的 ...

  8. 什么是 OAuth?

    OAuth 代表开放授权协议.这允许通过在 HTTP 服务上启用客户端应用程序(例 如第三方提供商 Facebook,GitHub 等)来访问资源所有者的资源.因此,您可 以在不使用其凭据的情况下与另 ...

  9. Jedis 与 Redisson 对比有什么优缺点?

    Jedis 是 Redis 的 Java 实现的客户端,其 API 提供了比较全面的 Redis 命令 的支持:Redisson 实现了分布式和可扩展的 Java 数据结构,和 Jedis 相比,功能 ...

  10. OpenCV+QT5在Window下的环境配置记录

    在安装OpenCV时最需要注意的是,OpenCV库,也就是我们需要的dll和动态库需要我们使用CMake来生成. 虽然在官网上下载得到的文件中已经包含了库文件和.h等头文件,但是在具体开发中编译器编译 ...