java基础总结回顾-第二部分
1.什么是变量
所谓变量,就是可以变化的量。 Java是一种强类型语言,每个变量都必须声明其类型。 Java变量是程序中最基本的存储单元,其要素包括:变量名,变量类型和作用域。”
变量可以理解为一个,保存数据的盒子
1.1为什么使用变量
- 在系统编译阶段,更具变量类型,给变量分配存储空间,用于存放数据,即存值。
- 在系统使用数据时,便于从变量的存储空间中获取数据,即取值。
- 确定变量的使用范围,即作用域。
用来保存,一些会根据时间推移,数据值会产生变化的东西,因为他发生变化,所以我们用一个变量来标识他,通俗的理解,变量,就是变化的一个量值,名称不变,值在变
1.2数据类型
- 整数类型
- byte:字节占用 1字节 8位,用来表达最小的数据单位,储存数据长度为 正负 127;
- short:字节占用 2字节 16位,储存数值长度为 -32768-32767
- int:字节占用 4字节 32位,最为常用的整数类型,储存长度为,-231-1~231 (21 亿)
- long:字节占用 8字节 64位,当到达int数值极限时使用,储存长度为 看图片:
- 浮点数类型:
- float:单精度浮点型 32位 取值范围 3.4e-38~3.4e-38
- double:双精度浮点型 64位 ,java中默认的浮点类型 取值范围 1.7e-308~1.7e-308
- 字符类型:
- char:16位 ,java字符使用Unicode编码;
- 布尔类型
- boolean : true 真 和 false 假
- 引用数据类型:
- 类 class
- 接口 interface
- 数组
2.声明变量
// 作用:
// 声明一个块级作用域的本地变量
// 可以设置初始值
// 语法:
// 声明变量
let x = 1
let y = 2
console.log(y); // 2
// 重新赋值
x = "今天学习的内容是声明变量哦~"
console.log(x); //今天学习的内容是声明变量哦~
// 1、注意点:不允许重复声明
// let 不允许在相同作用域内,重复声明同一个变量
// function fun() {
// let a = 10;
// var b = 10;
// }
// function fun() {
// let a = 10;
// let a = 1;
// }
// 2、块级作用域
// 它的用法类似于var,但是所声明的变量,只能在let命令所在的代码块内有效。
// 在下面代码块之中,分别用let和var声明了两个变量。
{
let a = 15;
var b = 20;
console.log(a); // 15
console.log(b); // 20
}
console.log(a);
console.log(b);
// console.log(a); // undefined
// console.log(b); // 1
// 结果let声明的变量报错,var声明的变量返回了正确的值
// 这表面,let声明的变量只在它所在的代码块有效。
// console.log(a); // a is not defined
// console.log(b); // 1
// 3、变量不会提升
// var命令会发生“变量提升”现象,即变量可以在声明之前使用,值为underfined。
// 这种现象多多少少是有些奇怪的,按照一般的逻辑,变量应该在声明语句之后才可以使用
// 为了纠正这种现象,let命令改变了语法行为,它声明的变量一定要在声明后使用,否则报错
// var的情况
console.log(foo);
var foo =2; //undefined
// let的情况
console.log(bar); // Cannot access "bar’ before initialization(无法在初始化之前访问变l量)
let bar = 2;
// 【总结】
// 1.不能重复声明
// 2.有块级作用域
// 3.不会变量提升
3.命名规范
- 包命名
包名命名,统一使用小写字母。
包名名的路径建议符合所有开发的系统模块的定义,以便看了包名就明白是哪个模块,从而直接到对应包里找相应的实现。
由于Java面向对象的特征,在最新的Java编程规范中,要求开发人员在自己定义的包名前加上唯一的前缀,由于互联网上的域名称是不会重复的,所以多数开发人员采用自己公司的名称.项目名.模块名.*,在互联网上的域名称作为程序包的唯一前缀。例如:com.mooc.base.类。- 类命名
类名命名,推荐使用大驼峰命名形式,即单词的首字母大写。如果类名名称由多个单词组成,则每个单词的首字母均应为大写,如这个所写词中包含单词缩写,则这个缩写词的每个字母均应答谢。- 方法名
方法命名采用小驼峰的形式,首字母小写。如果是由多个单词组成的话,第一个单词的首字母小写,其余的单词首字母大写。- 变量名
推荐的命名规范有以下3种:
(1)Camel标记法:首字母是小写的,接下来的单词都以大写字母开头。
(2)Pascal标记法:首字母是大写的,接下来的单词都以大写字母开头。
(3)匈牙利标记法:在以Pascal标记法的变量前附加小写序列说明该变量的烈性。它使用1-3字符前缀表示数据类型,3个字符的前缀必须小写,前缀后面是由表意性强的一个单词或多个单词组成的名字,而且每个单词的首写字母大写,其他字母小写。- 常量名
常量名采用全部大写的形式。- 命名原则
所有命名规则遵循以下规则
a. 名称只能由字母、数字、下划线、$符号等组成,,但不能以数字开头。
d.名称不能使用JAVA中的关键字,比如 char、 double、if、for、class。
c.不允许使用中文及拼音命名。- 项目命名规范
最好用英文,所有单词全部用小写。如testjavaproject、studentmanagement等,
当然也也可以用中文,如“学生管理系统”等
9.POJO类
具有含义的名字,如果有多个单词,每个单词头字母大写。一般和数据库的表照应。例如:user_info表 则POJO类为UserInfo.
4.变量常见错误
1.1 问题
在我们使用变量的过程中,会遇到一些问题,在此将这些问题进行汇总,在今后使用的过程中,避免出错。即使出现错误也可以很快的找到问题所在。
1.2 方案
变量在使用的过程中,常见问题总结为如下几点:
1)使用未经声明的变量。
2)使用不符合Java标识符命名规则的变量。
3)使用未经初始化的变量。
4)变量的赋值与变量的类型不匹配
1.3 步骤
实现此案例需要按照如下步骤进行。
步骤一:使用未经声明的变量
Java语言语法规定,变量使用之前必须声明,否则会有编译错误。大多数时候我们都记得这个规范,但是还是会出现变量未声明就使用的情况,请看如下代码:
-
public static void main(String[] args){
-
a =1;// 编译错误,变量没有声明
-
int score =0;
-
scord =100;// 编译错误
-
System.out.println(score);
-
}
5.常量
常量:在执行过程中,其值不发生改变的量。
常量分为:字面值常量,自定义常量。
字面值常量:
- 字符串常量(用双引号括起来的内容)“hello”,
- B.整数常量(所有整数)1,23,
- 小数常量(所有小数)11.3,34.45,
- D.字符常量(用单引号括起来的内容)‘a’,‘A’,‘0’,
- E.布尔常量(true,false)
- F.空常量 (null)
java中针对整数常量提供了四种表现形式:
A. 二进制(由0,1组成。以0b开头)
B. 八进制(由0,1,…7组成。以0开头。)
C. 十进制(由0,1,…9组成。整数默认是十进制。)
D. 十六进制(由0,1,…9,a,b,c,d,e,f(大小写均可)组成。以0x开头。)
6.运算符
- 算术运算符: + - / * % ++ –
- 赋值运算符: =
- 比较运算符: < > <= >= == !=
- 逻辑运算符: &&(与) ||(或) !(非) &(与) | (或)
- 三目运算符:?
- 位运算: &(与) |(或) ^(异或)
1.算术运算符
- +:数值类型 + 加法
- -: 数值类型 - 减法
- *: 数值类型 * 乘法
- /:整数/整数 整除(结果取整)
- %:取余 5%2=1
- ++: 加1 语法 变量++ ++变量
前++: ++变量 步骤:先变量加1, 后赋值, 整个表达式的值=变量的值
后++:变量++ 先赋值: 变量的值赋给表达式 后加1: 变量加1
7.–:减1
前–:–变量: 先减1, 再赋值
后–:变量–: 先赋值,再减1
2.赋值运算符
- =: 语法: 变量 = 值; 变量 = 变量1;
不能写: 值 = 变量; 错误, 把赋值符号右 边赋值给左边- +=: a += b; a = a+b;
- -=: a -= b; a= a-b;
- =: a * = b; a = ab;
- /=: a /= b; a = a/b;
- %=: a%=b; a= a%b;
3.比较运算符
比较运算符结果: boolean类型,返回值true/false
常见的使用场景: 条件语句, 循环语句
== 等于, = 赋值符号
!= 不等于
:>大于
< 小于
= 大于等于
<= 小于等于
4.逻辑运算符
&& 短路与, 如果第一个表达式的结果为false, && 后面的表达式都不执行(类似电路的短路)
|| 短路或: 如果第一个表达式的结果为true, || 后面的表达式都不执行(类似电路的短路)
! 非
& 与 没有短路
| 或 没有短路
结果: boolean类型
使用的场景: 条件, 循环中, 连接多个比较表达式
6.位运算
&: 按位与 : 1:true 0:false 只要位上有一个为0, 结果:0 位上都为1, 结果: 1
|: 按位或: 只要位上有一个为1: 结果: 1 位上都是0: 结果: 0
!: 按位非:1 取反-> 0 0-取反->1
^: 异或: 一个数异或某个数两次, 得到自己(简单加密) 两个值相同,异或为0;两个值不同,异或为1;
移位操作: 拓展
:>>右移
<<:左移
最后来看看java中进制的表示有哪些: 十进制, 八进制, 十六进制:
int a = 123; //十进制数
int b = 0123; //八进制
int c = 0x123; //十六进制
7.控制台输入
import java.util.Scanner; //必须先在类头添加这个才能运用输入功能
Scanner scan=new Scanner(System.in);//控制台输入控件
System.out.println("请输入");//提示输入
int a=scan.nextInt(); //nextInt()接收int类型的输入
String str=scan.nextLine(); //nextLine()接收字符串类型的输入
System.out.println(a);//输出刚才输入的值
8.数据类型转换
- java基本的数据类型有8种:byte、short、int、long、float、double、boolean、char。前六种基本数据类型用于存储数字,char类型可以保存一个Unicode字符,boolean类型可以包含两种可能的状态(false或true)。
- 引用数据类型包括:类、接口、枚举、记录、注解和数组这六种。
- 自动类型转换的条件:①两种数据类型兼容,②目标数据类型大于源数据类型。
package com.demo;
import java.math.BigDecimal;
public class AutomaticDem {
public static void main(String[] args) {
// 自动数据类型转换
byte a=100;
//byte–自动提升shrot、int
int b=a;
short c=100;
b=c;
char d=‘A’;
b=d;
//int–long提升
long e=b;
//float–double类型提升
float f=3.14f;
double g=f;
g=b;
// int、long—float或者double转型的时候会精度丢失
int n=123456789;
float f2=n;
System.out.println(f2);
//常量:字面值常量,常量的方式进行计算;
//将计算的结果赋值给一个变量,只要这个变量的空间能够存储下这个值就可以
//char类型能够接纳的数据类型:0-65535
int age=19;
char sex=‘女’;
char result=19+‘女’;
//char result2=65536;
//age1和sex1是变量,变量在运算过程中,Sex1的数据类型
//会由char类型自动提升为int类型,所以结果是int类型,
//不能直接赋值给char类型
int age1=19;
char sex1=‘女’;
char result1=(char)(age1+sex1);
byte dd=(byte)200.2;
System.out.println(dd);
int a1=1,b1=2,c1=3;
System.out.println(“sum=”+a1+b1+c1);
System.out.println(“sum=”+(a1+b1+c1));
}
}
9.关系运算符
关系运算符主要是以下六种
==(等于):a == b,判断a和b是否相等,相等为true,不相等为false
!=(不等于):a != b,判断a和b是否不相等,相等为false,不相等为true
:>(大于):a > b,判断a是否大于b,成立为true,反之为false
<(小于):a < b,判断a是否小于b,成立为true,反之为false
:>=(大于等于):a >= b,判断a是否大于等于b,成立为true,反之为false
<=(小于等于):a <= b,判断a是否小于等于b,成立为true,反之为false
关系运算符只会输出true和false的布尔值。
==是判断,=是赋值