注释
-
概述:对代码进行解释的部分
-
分类:
-
单行注释【//】
特点:一次只能注释一行内容
可以嵌套使用
-
多行注释【/* 注释的内容 */】
特点:可以选择注释多行内容
不可以嵌套使用
-
代码实例:
//定义的一个主方法;单行注释。
public static void main(String[] args) {
System.out.println("陈爽~~~~~~~");
/*
* 多行
* 注释
* */
}
关键字
- 概述:官方定义的具有特殊含义的关键字
abstract | assert | boolean | break | byte |
---|---|---|---|---|
case | catch | char | class | const |
continue | default | do | double | else |
enum | extends | final | finally | float |
for | goto | if | implements | import |
instanceof | int | interface | long | native |
new | package | private | protected | public |
return | strictfp | short | static | super |
switch | synchronized | this | throw | throws |
transient | try | void | volatile | while |
注意:
- 保留字:现Java版本尚未使用,但是以后版本可能会当作关键字使用:【goto 、const】
- 自己命名时候避免使用保留字
- 关键字全部都是小写!!
标识符:
自己起名字的都叫做标识符
标识符命名规则
- 【数字不能开头】
- 由字母、下划线(_)、美元符($)、或者数字组成
- 不能使用关键字和保留字命名,但可以包含它们
- 标识符大小写敏感
- 标识符不能包含空格
- 不建议使用中文或者拼音命名
常量
用来表示那些不会发生改变的数据
-
分类:直接写出来的数据也可以成为:字面值常量
-
基本数据类型常量:
- 整数常量:表示所有的整数 10 100 1000 1 2 -2
- 小数常量:表示所有的小数 1.1 1.2 1.3 -1.2
- 字符常量:使用单引号引起来的单个符号 ‘a’ ‘你’
- 布尔常量:表示真和假 true false
-
引用数据类型的常量
-
字符串常量:使用双引号引起来的任何内容
-
空常量: null 不指向任何数据
不能直接打印、可以用来判断
-
-
代码
public class Demo02 {
public static void main(String[] args) {
//打印整型常量
System.out.println(666);
//打印小数常量
System.out.println(66.66);
//打印字符常量
System.out.println('a');
//打印字符串常量
System.out.println("chenshuang");
//打印布尔常量
System.out.println(true);
System.out.println(false);
//打印空常量
//System.out.println(null);
}
}
变量
-
概述:在程序的运行过程中,可以发生变化的数据
-
定义格式:
-
数据类型 变量名 = 变量值;
public static void main(String[] args) { //要求:小明今年18岁、定义的变量保存 int age = 18; System.out.println("小明的年龄是"+age+"岁!"); //更改变量; age = 20; //重新打印 System.out.println("小明的年龄是"+age+"岁!"); //要求定义小明的身高,初始身高为180.5、再将身高改为190.5; double height = 180.5; System.out.println(height); height = 190.5; System.out.println(height); }
-
-
说明:
-
数据类型:表示在运行内存中给变量分配内存空间的方式
-
变量名:给我们定义的可以变化的数据起一个名字
1、小驼峰命名法:xxxYyyZzz、maxValue
-
-
定义变量的原因:方便改变
-
变量在内存中存储的方式
变量注意事项
-
变量是有作用域的,在哪个作用域定义就在哪个定义域使用。
作用域:大括号
-
在同一个作用域中不能定义重名变量
-
在方法中定义的变量、先赋值在使用(不赋值的话编译报错,在使用前赋值就行)
-
定义多个同类型的变量,可以一行定义。【int a=1,b=2;】
数据类型
-
概述:Java语言是强类型语言,在定义变量时候,要强制给变量分配空间。
-
数据类型分类
- 基本数据类型
- 整数类型:
- byte 1字节 -128~127
- short 2字节 -32768 ~32767
- int 4字节 -2147483648~2147483647
- long 8字节 ……………………
- 小数类型:【IEEE754标准】
- float 4字节 单精度小数
- double 8字节 双精度小数
- 字符类型:
- char 2字节
- 布尔类型:
- boolean true、 false
- 整数类型:
- 引用数据类型
- 基本数据类型
-
注意:
-
整数和小数是由默认类型的
-
如果定义了一个整数,默认类型为int;
如果想要定义一个超过int范围的整数,可以在数据后面加一个L、l;
- 如果定义一个小数,默认类型为double;
如果想要定义一个float类型的小数,可以在数据后面加一个F 、f;
代码:
public static void main(String[] args) { //通过四种数据类型来定义整数 byte a = 127; short s = 32677; int i = 156461; long l = 123135446L; //定义小数 float f = 12.15f; double d = 148.456487; //定义字符 char c = 'c'; char c1 = ' '; //定义布尔类型 boolean boo = true; boolean boo1 = false; System.out.println("a\ni\nl\nf\nd\nc\nc1\nboo\nboo1"); } }
-
数据类型之间的转换
隐式转换:
-
小数据类型和大数据类型再进行运算时,会先将小数据类型转为大数据类型在运算。最终的结果是大数据类型
-
数据类型排序:
byte < char < short < int < long < float < double
如果是byte\char\short\int\这四个数据类型转换、统一都转换成int类型。
代码:
public static void main(String[] args) { int i = 100; long l = 10000L; //先将i转换成long类型,然后再进行计算 long sum = i + l ; int i1 = 100; double d = 50.555; double sum1 = i1 + d; byte b = 98; short s = 55; //byte、short、char、int、这四个数据类型计算都先转换成int类型; int sum2 = b + s; }
强制转换:
-
概述:可以将某个类型的数据任意转换为其他类型
-
转换的格式:
(要转换的数据类型)原数据类型;
代码:
public static void main(String[] args) {
int i = 100;
//强制将int类型转化为double类型;
double d = (double) i;
System.out.println(d);
//将int类型转换为byte类型,因为100在byte的范围内,所以数据没问题;
byte b = (byte) i;
int i1 = 1000;
byte b1 = (byte) i1;
System.out.println(b1);//因为1000不在byte的范围内,所以会数据丢失
}
字符类型:
-
字符:单引号引起来的单个符号
-
字符数据类型:char
-
计算机底层存储数据,只能存储二进制
-
特点:
- 定义的整数和小数会默认转为二进制,然后被存储或者处理。
- 定义的字符先转为对应的十进制整数,然后将十进制的整数再转为二进制后处理
-
结论:
在程序中定义出来的每个字符都有其对应的十进制整数,在编码表中显示。【ASCII表】
-
ASCII编码表
-
ASCII编码表只定义一部分,中文字符编码表,GBK编码表
一个英文占用1个字节,一个中文占用2个字节
-
因为每个国家都有自己国家的编码表,所以有一个万国码表,UTF-8;
一个英文占用1个字节,一个中文占用3个字节
-
整数 ===> 字符 解码
字符 ===> 整数 编码
字符串类型:
-
使用双引号引起来的任意个符号
-
定义字符串变量:String
-
特点:
- 基本数据类型变量中存储的是数据本身
- 引用数据类型变量中存储的是数据所在的地址值
-
图示
-
字符串可以和其他数据类型的数据进行 + 运算:
- 字符串之间可以直接相加: 相加表示的是字符串之间的拼接
- 字符串和其他类型数据 + :会先将其他数据转为字符串在拼接
代码:
public static void main(String[] args) {
String str1 = "chen";
String str2 = "shuang";
String result = str1 + str2;
System.out.println(result); //chenshuang
System.out.println("chen"+100); //chen100
System.out.println("chen"+'爽'); //chen爽
System.out.println("chen"+true); //chentrue
System.out.println(100+200+"chenshuang"); //300chenshuang
System.out.println("chenshuang"+100+200); //chenshuang100200
System.out.println('a'+'b'+"chenshuang"); //195chenshuang
}
运算符
概述:对数据进行各种运算的符号
分类:
- 算术运算符
- 自增自减运算符
- 赋值运算符
- 比较运算符
- 逻辑运算符
- 三元运算符
算术运算符
-
分类:+ - * / %
-
**+:加运算符:**可以进行数据的加法运算
表示字符串的拼接
表示正数 +10
-
**-:减运算符:**进行数据的减法运算
表示负数 -10
-
***:乘运算符:**表示数据的乘法运算
-
/:除运算符(取商运算符)
- 如果两个数相除,结果还是整数(只要两个数相除的商)
- 如果数据中有小数,结果就是小数(小数师大范围类型,结果也是大范围类型)
-
%:取余运算符 取模运算符
- 获取两个数相除的余数(不要商,就要余数)
- 结果的正负,只和 “%” 前面数据的正负有关,前面数据为正,结果就为证
-
自增自减运算符
- 分类: ++ –
- ++:自增运算符
- 可以对一个变量进行自增运算,在原有值的基础上+1;
- –:自减运算符
- 可以对一个变量进行自减运算,在原有值的基础上-1;
- 特点:
- ++i表示,先自增再运算
- i++表示,先运算载自增
- ++:自增运算符
赋值运算符
-
分类:
基础赋值运算符:=
- 将符号右边的数据赋值给左边的变量
*扩展的赋值运算符:+= -= = /=
- 先对右边的数据进行运算再复制给左边的值(i+=10 ====> i=i+10)
-
注意:
关于数值运算的符号,只适用于整数、小数、字符。
比较运算符
-
分类:
基础的比较运算符:> < >= <=
-
比较方式:比较符号左边两边数据的大小关系,满足为真、不满足为假。
-
**注意:**只参与整数、小数、字符(数据类型)之间的比较。
字符串、布尔、null不能使用以上符号互相比较
扩展的比较运算符:== !==
-
比较方式:比较两个数据是否相等或者不等
==:如果两个数据相等为真,不等为假
!=:如果两个数据不等为真,相等为假
-
**注意:**不仅可以参与数值之间的比较
还可以参与布尔、字符串的比较(仅限同数据类型之间)
-
逻辑运算符
-
分类:& | && ||
-
&:逻辑与运算符
-
比较方式:左右两边的表达式结果都为真,最终为真
左右两边的表达式结果有一个不为真,最终为假
-
不会短路
-
总结:全真则真,有假则假
-
-
|:逻辑或运算符
-
比较方式:左右两边的表达式结果有一个为真,最终为真
左右两边的表达式都为假,最终为假
-
总结:有真则真,全假则假
-
-
&&:逻辑短路与
- 比较方式:全真为真,有假则假
- 会短路。
-
||:逻辑短路或
- 比较方式:有真为真,全假则假
- 会短路
-
!:逻辑非
- 比较方式:取反(真为假、假为真)
-
public static void main(String[] args) {
//逻辑与
int i = 10;
System.out.println((i > 10) & ((i++)>10) );//false
//逻辑或
i = 10;
System.out.println((i < 10) | ((++i)>10) );//true
//逻辑短路与
i = 10;
System.out.println((i > 10) && ((i++)>10));//false\后面不执行、短路
//逻辑短路或
i = 10;
System.out.println(((++i) > 10) || ((++i)>10));//true\后面不执行、短路
}
三元运算符
1、元:用来表示数据或者表达式
-
三元:表示三个数据或者三个表达式
-
格式:表达式1 ? 表达式2 : 表达式3;
-
说明:
- 表达式1必须是一个布尔表达式(结果要么为真要么为假的表达式叫做布尔表达式)
- 表达式2和表达式3可以是任意操作
-
三元运算符的执行流程:
- 先执行表达式1 ,结果要么为真要么为假
- 如果表达式1的结果为真,执行表达式2;结束
- 如果表达式1的结果为假,执行表达式3;结束
int s = i > j ? i : j;
返回值类型一样可以接收
i==j ? "cehnshuang" : 0;
当表达式返回类型不一致的时候,不可以接收。只能直接打印
位运算符
-
概述:再进行数据的运算时,是根据该数据的二进制移动位置来改变的一种方式
【相比普通运算,运算效率高】
-
分类:
<< >> >>>
-
1、<< 左移运算符:向左移动一位扩大2倍。移动两位扩大四倍,3位扩大8倍;
-
2、>> 右移运算符:向右移动一位扩大2倍。移动两位扩大四倍,3位扩大8倍;
-
3、>>> 无符号右移运算符:和右移运算符相同
【但不能移动复数、因为符号位也会随之移动。】
-
数据的进制
-
进制:数据进位的一种规则
-
常见的进制:二进制、八进制、十进制、十六进制
- 二进制:
- 二进制的每一位数据都是由 0、1 组成
- 进位规则:逢二进一
- 表示数据:0bXXXX
- 八进制:
- 八进制的每一个数据,都以由 0~7 组成
- 进位规则:逢八进一
- 表示数据:0XXXX
- 十进制:
- 十进制的每一个数据,都以由 0~9 组成
- 进制规则:逢十进一
- 表示数据:XXXXX
- 十六进制:
- 十六进制的每一个数据,都以由 0~9abcdef 组成
- 进制规则:逢十六进一
- 表示数据:0x97fd
其他进制转为十进制
-
概述:将二进制、八进制、十六进制转化为十进制数据表示
-
方式:系数*技术的权次幂 求和
-
解释:
系数:每一位的值是多少,系数就是多少
基数:当前数据是几进制,基数就是几 0b100 : 2 010:8
权:从右往左一次递增 0 开始
例:
二进制:1010 1101 = 1*2^7 + 1*2^5 + 1*2^3 + 1*2^2 + 1 =173
十进制转为其他进制
-
方式:除基倒取余
-
解释:
- 除:除法运算
- 基:当前十进制的数据要转为几进制,基就是几
- 倒去余:反过来获取每次相除的余数
-
图示:
- 二进制:
键盘录入
- 概述:在程序启动之后,可以让用户给变量录入一些数据,将来用户录入多少,代码中使用的就是多少
- 步骤:
- 导包:import java.util.Scanner;
- 创建Scanner对象:Scanner sc = new Scanner(System.in);
- 使用方法来录入数据:int x = sc.nextInt();
- 可以使用这个变量x。
- 可以使用 sc.close(); 来关闭Scanner对象
- 注意:
- 导包要在类的上面导包
- nextInt() 方法—录入整数
- nextDouble() 方法–录入小数
- next() 方法—录入字符 【除了回车、遇到空格结束录入】
- nextLine() 方法—录入字符串 【只遇到回车结束录入】
- 录入多个数据,导包一次即可
获取随机数
- 概述:可以让程序给变量随机赋值
- 步骤:
- 导包:import java.until.Random;
- 创建对象:Random r = new Random();
- 时调用方法随机获取一个整数:r.nextInt();
- 使用获取的随机数