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

++ 出现在前

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

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

形参和调用

形参

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

    调用

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

    方法的内存是如何变化的

  • 方法只定义不调用是不会执行的,不会在JVM中分配空间

  • JVM:方法区内存堆内存栈内存

方法的重载机制overload

什么时候满足重载

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

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

递归

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

递归阶乘

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 + " , ");
    }
}