Java学习基础笔记——数据类型&运算符

第一章 Java概述

1.1 Java重要特点

1.2 相关概念

1.3 Java开发注意事项

1.4 Java常用的转义字符

1.5 初学java易犯错误

1.6 注释(comment)----Java中的注释类型

1.7 常用DOS命令

第二章 数据类型

2.1 数据类型 

2.1.1 整数类型

2.1.2 浮点类型

2.1.3 字符类型

2.1.4 布尔类型

2.2 编码

2.3 数据类型转换

2.3.1 基本数据类型转换

2.3.2 强制类型转换

2.3.3 基本数据类型和String类型的转换

第三章 运算符

3.1 运算符介绍

3.2 算术运算符

3.3 关系运算符(比较运算符)

3.4 逻辑运算符

3.5 赋值运算符

3.6 三元运算符

3.7 运算符优先级

3.8 标识符的命名规则和规范

3.8.1 标识符概念

3.8.2 标识符的命名规则

3.8.3 标识符命名规范

3.9 键盘输入

3.10 二进制

3.11 位运算符

3.11.1 原码、反码、补码

3.11.2 位运算符


第一章 Java概述

1.1 Java重要特点

  • Java语言是面向对象的

  • Java语言是跨平台性的(一个编译好的.class文件可以在多个系统下运行)

  • Java语言是解释型的(解释型语言:javascript,PHP,java-----需要解释器来执行) (编译型语言:c/c++)

1.2 相关概念

  • JDK --- Java开发程序包

  • JRE --- Java运行环境

  • JRE = JVM(Java虚拟机)+ Java的核心类库(类)

  • JDK = JRE + java开发工具

1.3 Java开发注意事项

  • Java源文件以.java为扩展名。源文件的基本组成部分是类(class)

  • Java应用程序的执行入口是main()方法。它有固定的书写格式:public static void main(String[] args) {...}

  • Java语言严格区分大小写

  • Java方法由一条条语句构成,每个语句以';'结束

  • 大括号都是成对出现的,缺一不可。[先写{}在写代码]

  • 一个源文件最多只能有一个public类。其他类的个数不限

  • 如果源文件包含一个public类,则文件名必须按该类命名!

  • 一个源文件中最多只能有一个public类。其他类的个数不限,也可以将main方法写在非public类中,然后指定运行非public类,这样入口方法就是非public的main方法

1.4 Java常用的转义字符

  • \t : 一个制表位,实现对齐的功能

  • \n: 换行符

  • \ \: 一个\

  • \ ": 一个"

  • \ ‘:一个’

  • \r: 一个回车 System.out.println("韩顺平教育\r北京");---------北京平教育

1.5 初学java易犯错误

  • 找不到文件-----解决方法:源文件名不存在或者写错,或路径错误

  • 主类名和文件名不一致-----解决方法:声明为public的主类应与文件名一致,否则编译失败

  • 缺少分号----解决方法:编译失败,注意错误出现的行数,再到源代码的指定位置改错

  • 学习编程最容易语法错误(初学者)------看编译器报告的错误信息

  • 举例:

  • 1.英文符号写成中文符号 (1&l 0&o)

  • 2.拼写错误

  • 3.相对比较困难的错误,其实是 业务错误,环境配置错误(!!!!!!!)

1.6 注释(comment)----Java中的注释类型

  • 单行注释

    • 基本格式---//注释文字

  • 多行注释

    • 基本格式---/* 注释文字 */

    • 使用细节

      • 被注释的文字,不会被JVM(java虚拟机)解释执行

      • 多行注释里面不允许有多行注释嵌套

  • 文档注释---注释内容可以被JDK提供的工具javadoc所解析,生成一套以网页文件形式体现的该程序的说明文档,一般写在类

    • 基本格式

    • 如何生成对应的文档注释

1.7 常用DOS命令

  • 查看当前目录是有什么

    dir dir d: \abc2\xxx

  • 切换到其他盘下:盘符号 cd-------change directory

    案例演示:切换到C盘 cd/D c:

  • 切换到当前盘的其他目录下(使用相对路径和绝对路径演示)

    案例演示: cd d:\abc2\test200 cd.. \ .. \ abc2\test200

  • 切换到上一级:

    案例演示: cd..

  • 切换到根目录:cd\

    案例演示 : cd\

  • 查看指定的目录下所有的子级目录

    tree

  • 退出DOS

    exit

第二章 数据类型

2.1 数据类型 

  • java数据类型分为两大类 基本数据类型,引用类型

  • 基本数据类型有8种,数值型[byte,short,int,long,float,double],char,boolean

  • 引用类型[类,接口,数组]

2.1.1 整数类型

  • 整型的类型

类型占用存储空间范围
byte(字节)1字节-128~127
short(短整型)2字节-32768~32767
int(整型)4字节-2147483648~2147483647
long(长整型)8字节-2^63~2^63-1
  • Java各整数类型有固定的范围和字段长度,不受具体OS[操作系统]的影响,以保证java程序的可移植性

  • Java的整型常量默认为int型,声明long型常量须后加'l'或'L'

  • Java程序中变量长声明为int型,除非不足以表示大数,才使用long

  • bit:计算机中的最小存储单位。byte:计算机中基本存储单元,1byte = 8bit。

2.1.2 浮点类型

  • 浮点型的分类

    类型占用存储空间范围
    单精度float4字节-3.403E38~3.403E38
    双精度double8字节-1.798E308~1.798E308

    说明:

    1.关于浮点数在机器中存放形式的简单说明,浮点数=符号位+指数位+尾数位

    2.尾数部分可能丢失,造成精度损失(小数都是近似值)

  • 与整数类型类似,Java浮点型也有固定的范围和字段长度,不受具体OS的影响

  • Java的浮点型常量默认为double型,声明float型常量,须后加'f'或"F"

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

    • 科学计数法形式:如 3.7f2[] 5.12E-2-----0.0512 5.12e2-----512.0

    • 十进制数形式:如 3.7 37.0f . 375

    • 通常情况下,应使用double型,因为它比float型更精确

    • 浮点数使用注意:2.7 和 8.1 / 3 比较

2.1.3 字符类型

  • 字符类型可以表示单个字符,字符类型是char,char是两个字节(可以存放汉字),多个字符用字符串String(后面详解)

  • 字符型使用细节

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

    • Java中还允许使用转义字符' \ '来将其后的字符转变为特殊字符型常量。如:char c3 = '\n'; // '\n'表示换行符

    • 在java中,char的本质是一个整数,在输出时,是unicode码对应的字符unicode

    • 可以直接给char赋一个整数,然后输出时,会按照对应的unicode字符输出[]

    • char类型是可以进行运算的,相当于一个整数,因为它都对应有Unicode码

  • 字符类型本质

    • 字符型存储到计算机中,需要将字符对应的码值(整数)找出来,比如'a'

      • 存储:'a' == > 码值 97 ==> 二进制 ==> 存储

      • 读取:二进制 => 97 ===> 'a' => 显示

    • 字符和码值的对应关系是通过字符编码表决定的

2.1.4 布尔类型

  • 布尔类型也叫boolean类型,boolean类型数据只允许取值true和false,无null

  • boolean类型占1个字节

  • boolean类型适于逻辑运算,一般用于程序流程控制 (后续详讲)

    • if条件控制语句;

    • while循环控制语句;

    • do-while循环控制语句;

    • for循环控制语句

  • 说明

    • 不可以0 或非 0 的整数替代flase 和true,这点和C语言不同

2.2 编码

  • 介绍一下字符编码表

  • ASCLL (编码表 一个字节表示,一个128个字符,实际上一个字节可以表示256个字符,只用128个)

  • Unicode (编码表是固定大小的编码,使用两个字节来表示字符,字母和汉字统一都是占用2个字节,这样浪费空间)

  • utf-8 (编码表,大小可变的编码,字母使用1个字节,汉字使用3个字节)

  • gbk (可以表示汉字,而且范围广,字母使用1个字节,汉字2个字节)

  • gb2312 (可以表示汉字,gb2312 < gbk)

  • big5码 (繁体中文,台湾,香港)

2.3 数据类型转换

2.3.1 基本数据类型转换

  • 当java程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数据类型,这就是自动类型转换

  • 数据类型按精度( 容量 )大小排序为

    char➡int➡long➡float➡double

    byte➡short➡int➡long➡float➡double

  • 自动数据类型转换注意事项和使用细节

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

    • 当我们把精度(容量)大的数据类型赋值给精度(容量)小的数据类型时,就会报错,反之就会进行自动类型转换

    • (byte,short) 和 char 之间不会相互自动转换

    • byte,short,char 他们三者可以计算,在计算时首先转换为int类型

    • boolean 不参与转换

    • 自动提升原则: 表达式结果的类型自动提升为 操作数中最大的类型

2.3.2 强制类型转换

  • 自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型,使用时要加上强制转换符 ( ) ,但可能造成精度降低或溢出

  • 强制类型转换细节说明

    • 当进行数据的大小从 大 ➡ 小,就需要使用强制转换

    • 强转符号只针对于最近的操作数有效,往往会使用小括号提升优先级

    • char 类型可以保存 int 的常量值,但不能保存int 的变量值,需要强转

    • byte 和 short 类型在进行运算时,当做int 类型处理

2.3.3 基本数据类型和String类型的转换

  • 在程序开发中,我们经常需要将基本数据类型转成String 类型。或者将String类型转成基本数据类型

  • 基本类型转String类型

    • 语法:将基本类型的值 + "  " 

  • String类型转基本数据类型

    • 语法:通过基本类型的包装类调用parseXX方法即可

  • 注意事项

    • 在将String 类型转成 基本数据类型时,要确保String类型能够转成有效的数据,比如:我们可以把 "123",转成一个整数,但是不能把"hello"转成一个整数

    • 如果格式不正确,就会抛出异常,程序就会终止

  • // 怎么把字符串转成字符char -> 含义是指 把字符串的第一个字符得到

    // str=''hello''  -> str.charAt(0) 得到str字符串的第一个字符 'h'

第三章 运算符

3.1 运算符介绍

  • 运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等

3.2 算术运算符

  • 算术运算符一览

    运算符运算范例结果
    +正号+77
    -负号b=11,-b-11
    +9+918
    -10-82
    *7*856
    /9/91
    %取模(取余)11%92
    ++自增:先运算后取值a=2;b=++aa=3;b=3
    ++自增:先取值后运算a=2;b=a++a=3;b=2
    --自减:先运算后取值a=2;b=--aa=1;b=1
    --自减:先取值后运算a=2;b=a--a=1;b=2
    +字符串相加"ljn" + "java""ljn java"
  • +,-,*,/,%,++,--,重点讲解 / 、%、++

    % 取模的本质是一个公式 a % b = a - a / b *b

  • 自增: ++

    作为独立的语句使用:

    前++ 和 后++ 都完全等价于i = i + 1;

    作为表达式使用

    前++ :++i先自增后赋值

    后++ :i++先赋值后自增

  • --, +、-、*是一个道理,可类推

3.3 关系运算符(比较运算符)

  • 关系运算符的结果都是boolean型,要么是true,要么是flase

  • 关系表达式 经常用在 if 结构的条件中或循环结构的条件中

3.4 逻辑运算符

  • 用于连接多个条件(多个关系表达式),最终的结果也是一个boolean值

  • 说明逻辑运算规则

    • a & b:叫逻辑与---当a和b同时为true,则结果为true,否则为false

    • a && b: 叫短路与---当a和b同时为true,则结果为true,否则为false

    • a|b:叫逻辑或---当a和b有一个为true,则结果为true,否则为false

    • a||b:叫短路或---当a和b有一个为true,则结果为true,否则为false

    • !a:叫取反,非运算---当a为true,则结果为false,当a为false,则结果为true

    • a^b:叫逻辑异或---当a和b不同时,则结果为true,否则为false

    • && 和 & 的使用区别

      • && 短路与:如果第一个条件为false,则第二个条件不会判断,最终结果为false,效率高

      • & 逻辑与:不管第一个条件是否为false,第二个条件都要判断,效率低

      • 开发中,我们使用的基本是短路与&&,效率高

    • ||和|的使用区别

      • ||短路或:如果第一个条件为true,则第二个条件不会判断,最终结果为true,效率高

      • |逻辑或:不管第一个条件是否为true,第二个条件都要判断,效率低

      • 开发中,我们基本使用短路或,效率高

3.5 赋值运算符

  • 赋值运算符就是将某个运算后的值,赋给指定的变量

  • 赋值运算符的分类

    • 基本赋值运算符 =

    • 复合赋值运算符 +=,-=,*=,/=,%= 等

      • a += b ----等价 a = a + b;

      • a -= b ----等价 a = a - b;

  • 赋值运算符特点

    • 运算顺序从右往左 int num = a + b + c;

    • 赋值运算符的左边只能是变量,右边可以是变量、表达式、常量值

      int num = 20; int num2 = 78 * 34 -10; int num3 = a;

    • 复合赋值运算符等价于下面的效果

      比如: a += 3; 等价于 a = a + 3;

    • 复合赋值运算符会进行类型转换

      byte b = 2; b += 3; b++;

3.6 三元运算符

  • 条件表达式?表达式1:表达式2;

  • 运算规则

    • 如果条件表达式为true,运算后的结果是表达式1;

    • 如果条件表达式为false,运算后的结果是表达式2;

  • 三元运算符使用细节

    • 表达式1和表达式2应当为可以赋给接收变量的类型(或可以自动转换/或者强制转换)

    • 三元运算符可以转成if--else语句

3.7 运算符优先级

  • 运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。

  • 只有单目运算符,赋值运算符是从右往左运算的

3.8 标识符的命名规则和规范

3.8.1 标识符概念

  • Java对各种变量、方法和类等命名时使用的字符序列称为标识符

  • 凡是自己可以起名字的地方都叫标识符 int num1 = 90;

3.8.2 标识符的命名规则

  • 由26个英文字母大小写,0-9,_ 或 $ 组成

  • 数字不可以开头。 int 3ab = a;

  • 不可以使用关键字和保留字,但能包含关键字和保留字。

  • Java中严格区分大小写,长度无限制。int totalNum = 10; int n = 90;

  • 标识符不能包含空格。int a b = 90;

3.8.3 标识符命名规范

  • 包名:多单词组成时所有字母都小写:aaa.bbb.ccc//比如 csdn.net.xxx

  • 类名、接口多:多单词组成时,所有单词的首字母大写:XxxYyyZzz 比如: StyJavaLang

  • 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写 如:styJavaLang

  • 常量名:所有字母都大写。多单词时每个单词用下划线连接

    比如:定义一个所得税率 TAX_RATE

3.9 键盘输入

  • 在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取。Input.java,需要一个扫描器,就是Scanner

  • 步骤:

    • 导入该类的所在包,java.util.*

    • 创建该类对象(声明变量)

    • 调用里面的API

3.10 二进制

  • 二进制: 0B & 0b 开头

    • 二进制转十进制-----从最低位(右边)开始,将每个位上的数提取出来,乘以2的(位数-1)次方,在求和

    • 十进制转二进制-----将该数不断除以2,知道商为0为止,然后将每步得到的余数倒过来,就是对应的二进制

    • 二进制转八进制-----从低位开始,将二进制数每三位一组,转成对应的八进制数即可

    • 二进制转十六进制---从低位开始,将二进制数每四位一组,转成对应的十六进制数即可

  • 八进制: 0 & 0o 开头

  • 十进制: 0D & 0d 开头

  • 十六进制: OX & 0x 开头

3.11 位运算符

3.11.1 原码、反码、补码

  • 二进制的最高位是符号位:0表示正数,1表示负数(口诀:0 -> 0 1 -> -)

  • 正数的原码、反码、补码都一样(三码合一)

  • 负数的反码=它的原码符号位不变,其他位取反(0 -> 1,1 -> 0)

  • 负数的补码=它的反码+1,负数的反码=它的补码-1

  • 0的反码、补码都是0

3.11.2 位运算符

  • java中有7个位运算(&、|、^、~、>>、<<、>>>)

    • 按位与 &、按位或|、按位异或^、按位取反~

      • 按位与& :两位全为1,结果为1,否则为0

      • 按位或| :两位有一个为1,结果为1,否则为0

      • 按位异或^ :两位一个为0,一个为1,结果为1,否则为0

      • 按位取反~ :0 -> 1,1 -> 0

    • 算术右移 >> 、算术左移 << 、逻辑右移(无符号右移) >>> 

      • 算术右移 >> :低位溢出,符号位不变,并用符号位补溢出的高位

      • 算术左移 << :符号位不变,低位补0

      • 逻辑右移(无符号右移) >>> :低位溢出,高位补0

      • 特别说明:没有 <<< 符号

      • int a = 1 >> 2 -> 1 / 2 / 2 = 0

      • int a = 1 << 2 -> 1 * 2 * 2 = 4

  • 29
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值