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” 编码

乱码最基本的问题就是没有使用同一套编码规则

标识符

可标记元素:

  1. 类名
  2. 方法名
  3. 变量名
  4. 接口名
  5. 常量名

规则:

  1. 数字、字母、下划线、美元符号$
  2. 不能以数字开头
  3. 关键字不能做标识符

遵守规范

  1. 类名、接口名、首字母大写,后面每个单词的首字母大写
    ○ StudentSexclassName
    ○ AccountPrice
  2. 变量名、方法名 首字母小写,后面每个单词首字母大写
    ○ lastName
    ○ firstName
  3. 常量名、全部大写,单词于单词之间用_连接
    ○ 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

转换规则

  1. 除了boolean 其余的都可以进行互相转换
  2. 小转大,自动转换。

byte<short<int < long <float<double <char

  1. 大转小加强制类型转换符

byte x = (byte) 128;

  1. 如果大小没超范围可以直接赋值
  2. byte,short,char 混合运算时,各自转换为int
  3. 多种数据类型混合运算,转成最大的

运算符

赋值运算符

基本

= 赋值

int i = 123;

拓展

+= 加等

-= 减等

*= 乘等

/= 除等

%= 余等

拓展类运算符 不改变运算类结果类型,超出范围自动强转

x += 5 等同于 x =(数据类型)(x+5)

算数运算符

  • 加 - 减 乘 / 除 % 取余
    ++ 自加 1
    *++ 出现在后
  1. int a = 100;
  2. int b = a++ ;
  3. System.out.println(a) ;// 101
  4. System.out.println(b); //100
  5. 当++ 出现在后表示先赋值 在自加1

++ 出现在前

  1. int a = 100;
  2. int b = ++a ;
  3. System.out.println(a) ;// 101
  4. System.out.println(b); //101
  5. 当++ 出现在前表示先自加1 在赋值

关系运算符

用来比较变量的运算符

< > <= >= != ==

字符串连接运算符 ”+“

  • 字符串拼接 有一个字符串就做拼接
  • 加法运算 两边都是数字都做加法运算

逻辑运算符

& 逻辑与

| 逻辑或

非 (取反)

^异或(两边算子,只要都不一样为真)

&& 短路与

第一个算子是false,直接为false,后面的算子不会进行运算 (短路效果)

|| 短路或

如果第一个算子为true直接为ture后面的算子不会进行运算(短路效果)


语句

循环语句for

  1. for(初始化表达式;布尔表达式;更新表达式)
  2. {
  3. // 循环体
  4. }

原理: 初始化表达式最先执行,且执行一次布尔表达式必须为true或者false

执行过程 初始化① , 布尔表达式② , 循环体 ③, 更新表达式④,布尔表达式 ⑤

循环语句while

  1. while(不二表达式){
  2. //循环体
  3. }

执行次数 0 ~ n 次

原理:判断表达式结果 为真执行循环体 为假退出循环体

循环语句 do…while

  1. do{
  2. //循环体
  3. } while(布尔表达式);

执行次数 1~n次

原理: 先执行循环体 再判断布尔表达式 为true执行 为false退出

if语句

  1. if(布尔表达式){
  2. //为真执行
  3. }else if (){
  4. //为真执行
  5. }else{
  6. //上面语句都没有执行 执行这个
  7. }

if 语句中有一个分支执行,整个if结束

switch

  1. switchint或者string类型字面值或变量):
  2. {
  3. case int或者String:
  4. java 语句;
  5. break //如果没有break,会出现case穿透;
  6. case ~~~~:
  7. ~~~~
  8. ~~~~
  9. default :
  10. java 语句; //上面都没有执行 执行这个
  11. }

原理: switch(~~)里的数据和case__:的数据进行匹配 如果匹配成功则执行java语句;

成功后:

  • 如果分支中有break , 整个switch 语句终止
  • 如果分支中没有break, 则直接进入到下一个case(不会进行匹配) case穿透

所有case都没有匹配成功 则执行default

switch 和case 后面之能int 或者String (byte,short ,char 自动转换)


方法调用

什么是方法,如何定义

本质:一段代码,重复使用

方法定义在类体之中,方法体之外,可定义多个,顺序随意

语法:

  1. 修饰符列表 返回值类型 方法名(形参){
  2. //java语句 方法体;
  3. }

返回值类型

可以为java中所有的数据类型

不返回任何数据 void public static void doOther(int a,int b){}

返回数据 例如

  1. public static int doSome(int a ,int b){
  2. return 123; // 返回123;
  3. //要求返回值必须和返回数据类型一致
  4. }

return

  1. 带有return的方法 一旦执行return方法直接终止
  2. return ; 可用来强制终止方法 (后面不能带数据)
  3. 同一个作用域中return下面不要写java语句,因为执行不到没意义
  4. 如果返回值类型是void 不能写return 值; 可用return; 终止方法

形参和调用

形参

  1. 局部变量、
  2. 多个形参用逗号隔开、
  3. 形参和实参必须满足数量相同,类型相同,否则报错、

调用

  • 带有static的方法 类名.方法名(实参)
  • 不带static的方法 引用.方法名(实参)

方法的内存是如何变化的

  • 方法只定义不调用是不会执行的,不会在JVM中分配空间
  • JVM: 方法区内存 堆内存 栈内存

方法的重载机制overload

什么时候满足重载

  1. 在同一类中
  2. 方法名相同
  3. 参数列表不同
  4. 数量不同
  5. 类型顺序不同
  6. 类型不同

方法重载和方法名,数据类型有关

方法重载和返回值类型,修饰符无关

递归

  • 方法调用自身
  • 递归一定要有结束语句

递归阶乘

  1. public static int jie (int n ){
  2. if (n ==1||n==0){//终止条件
  3. return 1;
  4. }else {
  5. int sum;
  6. sum = n*jie(n-1);//相同重复逻辑
  7. return sum;
  8. }
  9. }

质数

  1. for(int i = 2; i < 100; i++){
  2. boolean y = true; //定义一个y 为真则是素数, 当作标记使用
  3. for(int x = 2;x<i;x++)
  4. {
  5. if(i % x == 0){
  6. y = false; //如果I % x == 0 说明不是素数,能除尽,执行语句给y赋值 假
  7. break;
  8. }
  9. }
  10. if (y) //判断y是不是 真 是真 输出
  11. {
  12. Console.Write(i + " , ");
  13. }
  14. }