java中的注释:
单行注释:"//" 只能书写在一行的注释
多行注释:"/*
/" 注释多行内容
文档注释:"/
* */" 以"/**" 开头 以" */ "结尾
java数据类型:
主要分为两种数据类型:基本数据类型和引用数据类型
基本数据类型:
整数类型
:(byte(字节型),short(短整型),int(整型),long(长整型))
浮点类型
:double(双精度),float(单精度))带有小数点 Java中默认的小数值是double类型的。如需改变小数值类型为float类型,在小数结尾加上F/f;用第一位来记录符号,后面就位记录整数,其余记录小数 Long类型的数据类型建议用写的L表示,小写易于1混淆
字符型
:(char)单引号且单引号只能有一个字符 长度与short一样,也是16位
布尔型:
(boolean)true和false
引用数据类型
:
数组[] 类class(抽象类 abstract class) 接口(interface) 枚举(enum) 注解(@interface)
String类型:存储字符串
1个字节由8个bit组成 00000000 256种
用第一个bit位置来记录符号 0正数 1负数
数值范围 -2的7次方~2的7次方-1 为什么减一 0的存在
-128~127
ASCII码:
java的字面值:
给基本的变量赋值的方式就是字面值;
浮点数字面值:以F结尾的字面值表示folat类型
字符和字符串字面值:单引号和双引号
整数的字面值可以由四种进制来表示:
十进制:基10,包含从0~9的数字 ——常用
十六进制:基16,包含从0~9的数字,和从A-F的字母 0x开头表示16进制
八进制:基8,包含0~7的数字 0开头的表示8进制
二进制:基2,包含0和1 ,0b开头表示二进制;
转义字符:
\t 制表符(tab键相当于四个空格)
\r 回车 \n 换行 \” 双引号 \’ 单引号 \ 反斜杠
转义字符 \ 可以将身后的一个字符的意思发生转换
转义字符可以转换特殊的符号 “ ‘ \
数据类型的转换:
强制类型转换:
高精度(大)向低精度(小)转换需
强制转换
(丢失精度)
需注意虽然 short 和 char 类型都是16位的,但仍需要强转
隐式数据类型转换:
数据大小排序:byte short char int long
数据类型小的与大的数据类型运算 小的会被自动提升
常量:
程序运行过程中,不能再次改变的值
作用:固定的值,用来代表一个含义
变量:
用来命名一个数据的标识符 是一个内存空间,在创建(声明)时,必须指定数据类型和名字,只能存储一个内容(值 引用)可以改变
变量的生命周期(变量 栈内存空间 从声明开始创建出来 用完及回收)
语法规则:数据类型 = 变量名;
赋值:= 把右边的值赋给左边
结束: ; 分号表示改行结束
关键字列表
中文也可以用来命名变量(不建议使用)
java 的作用域:
变量处于不同的位置时,有不同的含义:
分别是:字段、属性、成员变量、Field:变量被声明在类的下面
**参数**:变量声明在方法上,其作用域即为该方法内的所有代码中,其他方法不能调用,类里面也不能访问
**局部变量**:声明在方法中,作用域为声明开始的位置,到其所处的块结束位置
java中 final修饰变量——当变量被final修饰时,只能有一次赋值的机会,且不会改变
java表达式:
表达式是由变量、操作符以及方法调用所构成的结构
java的块:
{开始到对应的}结束,即为块
java运算符:
1、 算数运算符:+、-、*、/、%(取余)、++(自增)、–(自减)——对于运算单元的长度超过int,那么运算结果就按照最长的长度计算;如果运算单元的长度都不超过int,那么运算结果就按照int来计算
%(取模,取余):取余数
++(自增)–(自减)操作符置于前后的区别
i++; 先取值,在运算 ++i;先运算,再取值
有一个备份的过程, ++在变量之前,先自增后备份 ++在变量之后,先备份后自增,并将会将备份空间的值赋给别人
例:
关系运算(比较)符:
= 赋值 > 大于 >=大于或等于 <小于 <=小于或等于 ==是否相等 !=不等于 (instanceof:用来看一个对象是否是某个类型)
逻辑运算符:(值为true或false时)
! (逻辑非,取反):真变为假,假变为真
^ (逻辑异或^):两边结果不同,返回真。相同,返回假
&(长路与):两边的运算单元都是布尔值,都为真时,才为真,任意为假,就为假
&&(短路与):两边的运算单元都是布尔值,都为真时,才为真,任意为假,就为假
| (长路或):两边的运算单元都是布尔值 都为假时,才为假。任意为真,就为真
||(短路或):两边的运算单元都是布尔值 都为假时,才为假。任意为真,就为真
短路与和长路与:长路与两侧,都会别运算。短路与只要第一个是false,第二个就不需要运算了长路与 长路与无论第一个表达式的值是true或者false,第二个的值,都会被运算
&&短路与:什么情况发生短路:前面的值为false时发生短路
短路的是什么? 是&&之后所有的计算
短路或和长路或:长路或 两侧都会被运算 短路或 只要第一个是true,第二个就不进行运算了左边为true,右边不执行
java的位运算符:
| (按)位或 一个为true都为true
& (按)位与 两个都为true才为true
^ (按位)异或 两个不相同为true 1
~ 取非(按位取反)
<< 按位左位移 相当于乘以2的位移次幂
>> 按位右位移 相当于除以2的位移次幂
>>> 带符号右位移与无符号右位移
如果是两个>>位移符号 保留符号位置,原来是什么就是什么
如果是>>>位移符号 不保留符号位置 原来不管是什么都填0
例 6<<1 =? 12
00000000 0000000 00000000 00000110
0000000 0000000 00000000 000001100
java的位运算符(用来计算二进制):
1. 将数字转化为二进制表示
2. 竖着按照对应位置进行&|^ 计算(1—true 0—false )
3. 将计算后的二进制结果转化为十进制
例:3&5 3|5 3^5
00000011 00000011 00000011
00000101 00000101 00000101
00000001 00000111 00000110
1 7 6
知识补充:
原码 反码 补码
用二进制数字表示
6
原码:00000000 00000000 00000000 00000110
反码:00000000 00000000 00000000 00000110
补码:00000000 00000000 00000000 00000110
-6
原码:10000000 00000000 00000000 00000110 改变元素符号 1是负数 0是正数
反码:11111111 11111111 11111111 11111001 符号不动,取余取反
补码:11111111 11111111 11111111 11110010 反码+1
计算机中不管正数还是负数 存储的形式都是以补码的形式来存储的
注意 反码是一种表现形式 取反一个计算过程(每一位都取反)
补充:
八进制: 每三个bit为记录为一组(3个bit计算成十进制)
例:十进制的60转化为8进制
00 111 100 三个为一组 八进制:074 八进制以数字0开头
7 4
十六进制: 每四个bit位记录为一组
0011 1100 四个为一组 十六进制:0X3C 十六进制以0X开头
3 C 10-A 11-B 12-C 13-D 14-E 15-F
java的赋值运算符:
= 赋值操作
+= 对本身进行运算,并赋值
-=
/=
%=
&=
|=
^=
<<=
>>=
>>>=
+号作用: 自动类型提升 +号后面是表达式 需注意类型的转化
java三元操作符(算术运算符):
表达式?值1:值2 如果表达式为真,返回值1 如果表达式为假,返回值2
**运算符的优先级:**大多数运算符的结合性都是从左到右,即从左到右依次计算
java的Scanner类
用于扫描输入文本的实用程序,获得用户从键盘输入的数据
(1)在使用Scanner类时,需先导入
Import java.util.Scanner; Scanner类为与java的util包中
(2)创建Scanner对象
Scanner input = new Scanner(String.in);
Scanner的常用方法
方法 说明
String next() 获得一个字符串
int nextInt() 获得一个整型数值
double nextDouble() 获得一个双精度类型数值
boolean hasNext() 判断是否有输入数据,如果有,返回true, 没有返回false
需要注意,在通过nextInt()读取了整数后,再接着读取字符串,读出来的是回车换行:"\r\n",因为nextInt仅仅读取数字信息,而不会读取回车换行"\r\n".
所以,如果在业务上需要读取了整数后,接着读取字符串,那么就应该连续执行两次nextLine(),第一次是取走回车换行,第二次才是读取真正的字符串
next 和 nextLine 的区别:next : next在输入有效字符之前输入的空格,换行,tab都是无效的,在输入有效字符之后输入的空格,换行,tab都是它的结束符
nextLine的开始结束都只有换行,中间输入的空格,tab都会照常输出
注:Scanner类在不使用时的关闭 变量名.colse();