debug工具
{
程序调试工具,程序的另一种运行模式
操作流程:
1、加断点
2、右键选择debug运行
3、点哪里
step over:程序向下执行一步
4、看哪里
debuger:
frames:可以看到程序中有哪些方法正在执行
variable:看到程序中变量的变化过程
console:
控制台,可以看到程序的打印内容
}
Java基础语法
{
标识符:给类,方法,变量等起名字的符号
命名规则:由数字,字母,下划线,美元符组成,不能以数字开头,不能是关键字,区分大小写
命名规范:类使用大驼峰命名法,如GoodStudent、Student;变量使用小驼峰命名法,如firstName、name;
数据类型:基本数据类型和引用数据类型
基本数据类型
{
整数:
byte:1字节 -128~127
short:2字节
int:4字节(10位数)
long:8字节(19位数)
浮点数:
float:4字节(几乎不用)
double:8字节
字符:
char:2字节
布尔:
boolean:1字节
}
引用数据类型
{
String
}
定义变量的使用思路:
1、整数类型:首选int,发现int装不下,换成long,需要在书之后加L的标识
2、小数类型:首选double(使用float类型时需在数据后加f)
细节补充:
1、所有整数默认为int
2、所有小数默认为double
3、
}
键盘录入
{
三个步骤:
1、找符咒:inport java.util.Scanner; 寻找源码库中键盘录入代码
2、召唤精灵:Scanner sc = new Scanner(System.in); //sc为精灵名
3、指挥精灵干活:
int age = sc.nextInt(); 从键盘录入整数
int name = sc.next(); 从键盘字符串
}
运算符
{
运算符:对常量或变量进行操作的符号
表达式:运算符连接常量或变量且符合java语法的句子
算术运算符
{
+
-
*
/:java中整数相除,结果只会得到整数,如果想得到带有小数的结果,需要有小数参与运算
%:取模,得到除法之后剩下的余数(目前能使用到的场景:判断奇偶)
数值拆分:录入一个三位数,将其拆分为个位十位百位
个位:数值%10
十位:数值/10%10
百位:数值/10/10%10
}
自增自减运算符
{
++ 自增 让变量自身的值+1
-- 自减 让变量自身的值-1
使用方式:
1、单独使用(推荐)
一条语句中,只做++或--
符号在前在后没有区别 a--等于--a
2、参与运算使用(面试)
++a:先自增,再操作
int a = 10;
int b = ++a; //a=11 b=11
a++:先操作,再自增
int a = 10;
int b = a++; //b=10 a=11
自增自减运算符只能操作变量,不能操作常量
}
}
类型转换
{
隐式转换:把一个取值范围小的数值或者变量,赋值给另一个取值范围大的变量(小给大直接给)
int a = 10;
double b = a;
System.out.println(b); //输出 b = 10.0
取值范围从大到小:byte--short--int--long--float--double
取值范围小的数据,和取值范围大的数据进行运算,小的会提升为大的之后,再进行运算
byte short char三种数据在运算的时候,都会提升为int
强制转换:把一个群值范围大的数值或者变量,赋值给一个取值范围小的变量(不允许直接赋值,需要强制转换)
double a = 12.3;
int b = (int)a;
System.out.println(b); //输出 b = 12;
强转[有可能]造成精度损失,尽量减少强制转换的使用
/*
面试题:
以下代码是否存在问题, 如果有请说明问题原因,并改正
byte b1 = 3;
byte b2 =4;
byte b3 = b1 + b2;
错误原因 : b1和b2是两个byte类型, 在相加的时候, 会直接提升为int类型,提升之后,就是两个int相加了,结果还是int,将int类型结果
赋值给byte类型的变量, 属于大的给小的,不能直接给,出现编译错误
解决方案1:
int b3 = b1 + b2;
解决方案2:
byte b3 =(byte)(b1 + b2);
byte b =3+4;
疑惑点:3和4是两个整数,所有整数默认是int,就是两个int相加了, 结果还是int
将int类型的结果,赋值给byte类型的变量,不能直接给,
回答:没有错误
解析:Java存在常量优化机制, 在编译的时候,就把3和4进行相加,计算出一个7
产生字节码文件(.class)
byte b = 7;
检查计算的结果是否在byte的取值范围内
不在 :编译出错
在 : 编译通过
*/
}
赋值运算符
{
基本赋值运算符:
= 赋值 a = 10,将10赋值给变量a
扩展赋值运算符:
+= 加后赋值 a=a+b
-= 减后赋值 a=a-b
= 乘后赋值 a=ab
/= 除后赋值 a=a/b
%= 取余后赋值 a=(a/b)的余数
注意事项:扩展赋值运算符,自带强转效果
}
关系运算符
{
返回true or false
}
逻辑运算符
{
连接布尔类型的表达式,或者是值,用于整合多个条件
& 与 并且,遇false则false,需满足所有条件
| 或 或者,遇true则true,满足任一条件
! 非 取反,对一段逻辑整体取反
^ 异或 相同为false,不同为true(男女关系)
}
短路逻辑运算符
{
&& 短路与 具有短路效果,左边为false,右边不执行,左边为true,右边执行
|| 短路或 具有短路效果,左边为true,右边不执行,左边为false,右边执行
}
三元运算符
{
作用:能够根据一个条件,达成二者选其一
格式:判断条件?值1:值2;
执行流程:
1、执行判断条件,看其返回结果是true,false
2、true:取值1做最终结果
3、false:取值2做最终结果
int a = 10;
int b = 20;
int max = a > b ? a:b;
}
运算符优先级
{
()优先级最高
&&优先级高于||
}
分支语句
{
流程控制语句:通过一些语句来控制程序运行
if语句格式1:
if(判断语句){
语句体;
}
执行流程:
1、执行()中的判断条件,返回结果是true,false
2、true:执行{}中的语句
3、false:不执行{}中的语句
注意事项:
1、if语句()与{}之间不加分号
2、if语句{}中如果只有一句代码,{}可省略
3、if语句的()中,无论简单或复杂,只要由布尔类型的结果,就符合语法规则
if语句格式2:
if(判断条件){
语句体1;
}else{
语句体2;
}
if(判断条件1){
语句体1;
}else if(判断条件2){
语句体2;
}else{
语句体3;
}
}