java基础
常见DOS命令
- exit 退出
- cls 清屏
- del *class 删除所有class文件
- dir 列出当前目录下所有的文件
- cd
- 相对路径
- 绝对路径
- E: C:切换盘符(不区分大小写)
java分类
- SE 标准版
- EE 企业版
- ME 微型版
- JDK:java 开发工具包
- JVM:java虚拟机
转义字符
- 作用: 转义字符出现在特殊字符前,将特殊字符转化为普通字符
- \n 换行
- \t 制表符
- \ \
- ‘ ‘
- \ “ “
ASCII码
“a”——> 97 解码
65 ——> “A” 编码
乱码最基本的问题就是没有使用同一套编码规则
标识符
可标记元素:
- 类名
- 方法名
- 变量名
- 接口名
- 常量名
规则:
- 数字、字母、下划线、美元符号$
- 不能以数字开头
- 关键字不能做标识符
遵守规范
- 类名、接口名、首字母大写,后面每个单词的首字母大写
○ StudentSexclassName
○ AccountPrice - 变量名、方法名 首字母小写,后面每个单词首字母大写
○ lastName
○ firstName - 常量名、全部大写,单词于单词之间用_连接
○ MATH_PI
○ MAX_ID
java执行过程
java源代码——>.class字节码文件——>类装载器——->JVM——->操作系统——>硬件平台
数据类型与转换
作用:指导Java JVM 分配多大的空间
数据类型分类
基本数据类型
整数型 默认值0 (字节长度)
long i = 12345L;
浮点型 默认0.0
布尔型 默认值false
boolean
- ture
- false
字符型 默认值\u0000
char 2
引用数据类型
默认值为null
java 中 整型有三个表达方式
- 十进制 默认10
- int a = 10;
- 八进制(0开头的数)
- int b = 010;
- 十六进制 (0x开头)
- int c = 0x10;
数据类型的转换
- 强转
- long i = 200L;
- int x = (int)i;
- 数据大时,精度损失
- java中默认把整形作为int类型
- 但是int类型的取值范围是2147483648
- 如果超出了这个范围,需要进行强制类型转换,long
转换规则
- 除了boolean 其余的都可以进行互相转换
- 小转大,自动转换。
byte<short<int < long <float<double <char
- 大转小加强制类型转换符
byte x = (byte) 128;
- 如果大小没超范围可以直接赋值
- byte,short,char 混合运算时,各自转换为int
- 多种数据类型混合运算,转成最大的
运算符
赋值运算符
基本
= 赋值
int i = 123;
拓展
+= 加等
-= 减等
*= 乘等
/= 除等
%= 余等
拓展类运算符 不改变运算类结果类型,超出范围自动强转
x += 5 等同于 x =(数据类型)(x+5)
算数运算符
- 加 - 减 乘 / 除 % 取余
++ 自加 1
*++ 出现在后
int a = 100;
int b = a++ ;
System.out.println(a) ;// 101
System.out.println(b); //100
当++ 出现在后表示先赋值 在自加1
++ 出现在前
int a = 100;
int b = ++a ;
System.out.println(a) ;// 101
System.out.println(b); //101
当++ 出现在前表示先自加1 在赋值
关系运算符
用来比较变量的运算符
< > <= >= != ==
字符串连接运算符 ”+“
- 字符串拼接 有一个字符串就做拼接
- 加法运算 两边都是数字都做加法运算
逻辑运算符
& 逻辑与
| 逻辑或
!非 (取反)
^异或(两边算子,只要都不一样为真)
&& 短路与
第一个算子是false,直接为false,后面的算子不会进行运算 (短路效果)
|| 短路或
如果第一个算子为true直接为ture后面的算子不会进行运算(短路效果)
语句
循环语句for
for(初始化表达式;布尔表达式;更新表达式)
{
// 循环体
}
原理: 初始化表达式最先执行,且执行一次布尔表达式必须为true或者false
执行过程 初始化① , 布尔表达式② , 循环体 ③, 更新表达式④,布尔表达式 ⑤
循环语句while
while(不二表达式){
//循环体
}
执行次数 0 ~ n 次
原理:判断表达式结果 为真执行循环体 为假退出循环体
循环语句 do…while
do{
//循环体
} while(布尔表达式);
执行次数 1~n次
原理: 先执行循环体 再判断布尔表达式 为true执行 为false退出
if语句
if(布尔表达式){
//为真执行
}else if (){
//为真执行
}else{
//上面语句都没有执行 执行这个
}
if 语句中有一个分支执行,整个if结束
switch
switch(int或者string类型字面值或变量):
{
case int或者String:
java 语句;
break; //如果没有break,会出现case穿透;
case ~~~~:
~~~~
~~~~
default :
java 语句; //上面都没有执行 执行这个
}
原理: switch(~~)里的数据和case__:的数据进行匹配 如果匹配成功则执行java语句;
成功后:
- 如果分支中有break , 整个switch 语句终止
- 如果分支中没有break, 则直接进入到下一个case(不会进行匹配) case穿透
所有case都没有匹配成功 则执行default
switch 和case 后面之能int 或者String (byte,short ,char 自动转换)
方法调用
什么是方法,如何定义
本质:一段代码,重复使用
方法定义在类体之中,方法体之外,可定义多个,顺序随意
语法:
修饰符列表 返回值类型 方法名(形参){
//java语句 方法体;
}
返回值类型
可以为java中所有的数据类型
不返回任何数据 void public static void doOther(int a,int b){}
返回数据 例如
public static int doSome(int a ,int b){
return 123; // 返回123;
//要求返回值必须和返回数据类型一致
}
return
- 带有return的方法 一旦执行return方法直接终止
- return ; 可用来强制终止方法 (后面不能带数据)
- 同一个作用域中return下面不要写java语句,因为执行不到没意义
- 如果返回值类型是void 不能写return 值; 可用return; 终止方法
形参和调用
形参
- 局部变量、
- 多个形参用逗号隔开、
- 形参和实参必须满足数量相同,类型相同,否则报错、
调用
- 带有static的方法 类名.方法名(实参)
- 不带static的方法 引用.方法名(实参)
方法的内存是如何变化的
- 方法只定义不调用是不会执行的,不会在JVM中分配空间
- JVM: 方法区内存 堆内存 栈内存
方法的重载机制overload
什么时候满足重载
- 在同一类中
- 方法名相同
- 参数列表不同
- 数量不同
- 类型顺序不同
- 类型不同
方法重载和方法名,数据类型有关
方法重载和返回值类型,修饰符无关
递归
- 方法调用自身
- 递归一定要有结束语句
递归阶乘
public static int jie (int n ){
if (n ==1||n==0){//终止条件
return 1;
}else {
int sum;
sum = n*jie(n-1);//相同重复逻辑
return sum;
}
}
质数
for(int i = 2; i < 100; i++){
boolean y = true; //定义一个y 为真则是素数, 当作标记使用
for(int x = 2;x<i;x++)
{
if(i % x == 0){
y = false; //如果I % x == 0 说明不是素数,能除尽,执行语句给y赋值 假
break;
}
}
if (y) //判断y是不是 真 是真 输出
{
Console.Write(i + " , ");
}
}