前言:欢迎来到我的小窝,这里是一个新手程序员的起航之旅,记录着从“入坑”到“退坑”每一天……
- 计划任务
- 完成任务
任务描述:
Java语言作为当今主流的高级语言,很多的小伙伴已经开始学习java之旅了,
但是作为初学者,java基础语法是必备技能,只有熟练掌握了解java基础语法之后,
你才能更好地深入java语言的世界,开始你的java编程之旅……
知识点归纳:
1.文档注释
文档注释皆可嵌套单行注释,起解释说明的作用
/**
*文档注释,使用javadoc.exe生成API文档注释
*/
//单行注释
/*
var foo = 'bar';
var foo1 = 'bar1';
多行注释*/
2.标识符
命名规则
- 组成:字母,数字,下划线_,美元符号$(!数字不能开头)
- 严格区分大小写
- 关键字和保留字不能作为标识符使用
- 关键字:已经被java语法占用的字
- 保留字:goto const 将来会被java所使用的字
命名规范
- 见名知意
- 驼峰命名原则
- 类名|接口名 (每个单词首字母大写 HelloWorld)
- 变量名|方法名 (第一个单词小写,第二个单词开始,每个单词首字母大写 helloWorld)
- 常量名 (全部大写,每个单词之间_连接 HELLO_WORLD)
3.变量
3.1 变量是什么
程序执行过程中,其值可以发生改变的量 (不是值,而是一块空间)
3.2 变量如何定义
声明的同时赋值 | 数据类型 变量名 = 数据值;
//例:int num=1
先声明 后赋值 | 数据类型 变量名; 变量名 = 数据值;//例:int num; num=1;
3.3 变量的作用域
从变量的声明开始到包括它的离它最近的同一级 } 结束,局部作用域{}
3.4 变量的分类
局部变量 ==> 定义在局部位置(方法中|语句块中) 使用之前必须已经声明并且已经赋值,没有默认值
成员变量 ==> 定义在(类中 方法外) 定义在成员位置的变量,只声明不赋值,存在默认值
3.5 常量
常量是在程序执行过程中其值不能发生改变的量
- 字面值常量 ==>整数常量 0 100 -1 …小数常量 1.0 0.5 -2.3 …布尔常量 true false 空常量 null
- 自定义常量 ==>被final的变量为最终常量
//例:final int NUM=1
4.数据类型
4.1基本数据类型
整型
- byte 字节型 1个字节 [-128,127]
- short 短整型 2个字节 [-2的15次方,2的15次方-1]
- int 整型 4个字节 [-2的31次方,2的31次方-1] ,
默认为int long需要在字面量后加 l/L
- long 长整型 8个字节 [-2的61次方,2的61次方-1]
字符型
- char 字符型 2个字节
- 一对’ '包裹任意一个字符
- 通过0~65535之间的整数表示字符 Unicode字符集
布尔型
- boolean 布尔型 1个字节 1bit有效位
4.2 引用数据类型(类class 接口 interface 数组 String[])
4.3 进制转换
- 整型表现方式
- 二进制 由0~1组合, java中由0b|0B开头
- 八进制 由0·7组合,java中由0开头
- 十进制 默认
- 十六进制 由09,af|A~F组合, java中由0x|0X开头
- 浮点表现防止
- 小数的整数位为0的时候,0可以省略 0.6---->.6
- 科学计数法
1.23e2 --> 1.23*10^2 --> 123.0
1.23e-2 --> 1.23/10^2 -->0.0123
4.4 数据类型转换
注意 :
boolean类型不参与类型转换
如果符合类型范围要求大小的常量就能成功为byte,short,char类型赋值,常量的值在编译期间能够确定
自动类型提升 (小转大)
- 运算后的结果类型<int类型,会自动提升成为int
- 存储多种类型的数据参与运算时候,最终结果为参与运算的最大类型
- byte->short->int ->long->float->double
强制类型转换(大转小)
- 会损失精度
- 小范围类型 变量 = (小范围类型) 大范围类型数据;
5.运算符
注意
- 操作数 运算符左右两边的数为操作数
- 表达式 运算符连接两边的操作数整体称为表达式 a+b
1.按作用分类
- 算数运算符
- 加减乘除(+ - * /)取余(%)自增自减(++ --)
- ++ – 单独使用,放在变量前后,没有区别;
a++; ++a;
- ++ – 如果不是单独使用,放在变量前后有明显区别
- 在变量前面:先+1,-1再使用变量
- 在变量后面:先使用变量,再对变量+1,-1
- 赋值运算符
- 基础赋值运算符 = (优先级最低)
- 扩展赋值运算符 += -= *= /= %= (算数运算符+基础赋值运算符)
注意
:编译期间编译器会自动把适当优化成扩展赋值运算符的写法优点
: 提高执行效率,自动做强制类型转换缺点
不直观- 比较运算符|关系运算符
- (> < >= <=) 只能比较byte,short,int ,long ,float,double,char
- (== !=) 可以比较任意类型数据
- 逻辑运算符
& 与
: 一个为false就是false,两个都为true才是true| 或
:一个为true就是true,两个都为false才是false! 非
:!true–>false !false–>true^ 异或
:相同为false,不同为true短路运算符
:如果左边操作数就能够决定最终表达式的结果,右边的操作数不再执行
- && : 一个为false就是false,两个都为true才是true
- || : 一个为true就是true,两个都为false才是false
- 条件运算符(三元运算符)
boolean表达式 ? 值1 : 值2;
- 1.计算boolean表达式,得到boolean结果
- 2.如果boolean结果为true,取值1;如果boolean结果为true,取值2
- 位运算符
执行流程
:先把操作数转为二进制,再根据运算符的规则进行运算,得到二进制结果然后再转为十进制- & 对两个操作数统一位置的数据进行运算,一个为0就是0,两个都为1才是1
- | 对两个操作数统一位置的数据进行运算,一个为1就是1,两个都为 0才是 0
- ^ 对两个操作数统一位置的数据进行运算,相同为0,不同为1
- 以上三个运算符当操作数为boolean作为逻辑运算符,操作数为整数作为位运算符
- 位移运算符
执行流程
:先将左边的操作数转为二进制,然后向某一个移动第二个操作数个位数(推荐使用位移运算符)- (<<左移): 向左移动第二个操作数个位数,空位补0
规律 : 8<<3==? 8*2^3
- (>>右移) : 向左移动第二个操作数个位数,移出位置忽略不计,剩下的就为2进制结果
规律 : 8>>3==? 8/2^3
- 按操作数的个数分类
- 一元运算符|单目运算符 操作数只有1个 ++ – 正号 符号
- 二元运算符|双目运算符 操作数只有2个 + - * / …
- 三元运算符|三目运算符 条件运算符
6.工具类
Scanner(接受用户输入键盘的内容)
//1.导包
import java.util.Scanner;
//2.创建Scanner的变量|引用
Scanner sc = new Scanner(System.in);
//3.使用功能
引用.nextInt() 接收用户键盘输入的int类型的整数 **
引用.nextByte() 接收用户键盘输入的byte类型的整数
引用.nextShort()
引用.nextLong()
引用.nextFloat()
引用.nextDouble()
引用.next() 接收用户键盘输入的字符串,从有效字符开始接收,遇到空格停止接收,直到遇到enter结束功能
引用.nextLine() 接收用户输入一整行内容,包含空格,遇到enter结束功能
使用 nextLine()功能之前如果存在系列next功能,需要处理遗留enter问题
//4.释放资源
sc.close();
Random(产生随机数)
//1.导包
import java.util.Random;
//2.创建Random类型的引用
Random ran = new Random();
//3.使用功能
ran.nextInt(); 产生int范围内的随机数
ran.nextInt(n); 产生[0,n)范围内的随机整数
[min,max) ran.nextInt(max-min) + min
推导 :
/*ran.nextInt(max)-->[0,max)
ran.nextInt(max) + min -->[min,max+min)
ran.nextInt(max-min) + min -->[min,max)
[min,max] ran.nextInt(max-min+1) + min*/
7.流程控制
1.顺序结构 (从上到下执行)
2.选择结构(满足条件执行对应的代码段)
if语句
单分支 if(boolean表达式){ 满足条件执行的代码段; } 执行流程 : 1.boolean表达式,得到boolean结果 2.如果结果为true,执行{}中的语句体 如果结果为false,跳过if结构 双分支 if(boolean表达式){ 满足条件执行的代码段; }else{ 不满足条件执行的代码段; } 无论是否满足条件都能得到结果 多分支 if(条件1){ 语句体1; }else if(条件2){ 语句体2; }else if(条件3){ 语句体3; }.... else{ 语句体n; }
switch语句
if 区间判断,定值判断 switch定值判断 区别 : 能用switch都能使用if代替,能用if不一定能用switch switch(表达式|变量){ ///(表达式|变量)中的数据只能为 : byte,short,int ,char , jdk1.5->枚举 , jdk1.7->字符串 case 值1: 语句体1; break; case 值2: 语句体2; break; /*如果没有break,就会发生case穿透恰当的时候可以选择通 过case穿透实现,简化switch结构*/ .... default : //default可以定义在switch语句中的任意位置,一般为最后 语句体n; break; }
最后,这是今天的思维导图总结:
总结:
今天是愉快的一天……