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
    *++ 出现在后

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

  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. 类型不同

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

递归

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

递归阶乘
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 + “ , “); } }