3.Java基础

1、注释
  1. 单行注释 //
  2. 多行注释 /* */
  3. 文档注释 /** */ (与命令javados -encoding UTF-8 charset UTF-8 a.java 一起使用生成帮助文档)
2、数据类型
  1. 基本数据类型(8种):int、short、baty、long、float、double(金融相关的浮点使用BigDecimal)、char、boolean
  2. 引用数据类型:类、接口、数组
  3. 1B(byte,字节)=8bit(位)
3、使用Intellij Idea生成JavaDoc文档

参考链接:https://blog.csdn.net/weixin_42140580/article/details/89635775

4、可变参数

一个方法只能定义一个可变参数,并且它必须是最后一个参数

public static void fun(int … num);

当前fun方法,可接收1个或1个以上的int参数,或直接是int数组

5、for Each循环
for ( 变量类型  变量名 : 数组名 ) {   
    需要执行的循环语句;
}
5、递归
public static void fun(int n){
	if(n==1){
		return 1;
	}
	else{
		return n*fun(n-1);
	}
};
6、工具类
  1. Scanner类,用于用户交互
  2. Arrays (java.util包下)操作数组
  3. Math函数(java.lang下) 执行基本数学运算的方法
  4. jdk在线文档:https://www.matools.com/api/java8
7、稀疏数组
0 0 0 0             行  列  值				
0 0 2 0			[0]	4	3	2				[0]中记录总行数、总列数、有效值个数(0以外的值)
0 0 0 1			[1]	1	2	2				[1][2]...中记录有效值的位置(行数用下标定义,比实际行数少1),
				[2]	2	3	1				[1]中表示2在第1行第二列,[2]中表示1在第2行第3列
8、OOP面向对象编程
  • 本质:以类的方式组织代码,以对象的方式组织(封装)数据
  • 抽象:abstract
    • 不能new抽象类,只能子类去实现它
    • 抽象类中可以写普通方法
    • 抽象方法必须在抽象类中
  • 三大特性:
    • 封装:get/set
    • 继承:extends
      • 子类 单继承 父类所有非私有的属性与方法,
      • 使用supper进行调用父类属性、方法
      • 重写:子类重写父类的非静态的方法,重写后调用重写的方法会是子类的方法
    • 多态
      • Persion p=new man(); 父类引用指向子类,无法调用子类的独有方法
  • 接口:interface
    • 一个类可以说实现多个接口
    • implement 实现接口
    • 实现接口的类,必须实现接口的方法
9、关键字
  • static: 修饰的方法与类一起加载,优先级较高;未用static修饰的方式只能通过创建对象调用

  • private:私有的

  • instanceof:

    boolean b = object1 instanceof object2			//当object1 与object2存在继承关系时,结果b为true,否则b为falsh
    
10、栈和堆
  • 栈:存储变量名称,指向堆中的对象、方法
  • 堆:存储对象和方法
11、异常处理
  • 异常捕获
try{
	int a=1/0;
}catch(Errer e){
	log(e);
}
catch(Exception e){
	log(e);
}
finally{
	log(“最后要执行的事情”);
}
  • 异常抛出
    • throw:用在代码逻辑书写过程中
    • throws:用在方法上
11、String、StringBuffer与StringBuilder之间区别
StringStringBufferStringBuilder
String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且浪费大量优先的内存空间StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量可变类,速度更快
不可变可变可变
线程安全线程不安全
多线程操作字符串单线程操作字符串
12、lambda 表达式

​ lambda 表达式的语法格式如下:

​ (parameters) -> expression 或 (parameters) ->{ statements; }

​ 以下是lambda表达式的重要特征:

  • **可选类型声明:**不需要声明参数类型,编译器可以统一识别参数值。
  • **可选的参数圆括号:**一个参数无需定义圆括号,但多个参数需要定义圆括号。
  • **可选的大括号:**如果主体包含了一个语句,就不需要使用大括号。
  • **可选的返回关键字:**如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定表达式返回了一个数值。
  • 参考链接:https://www.runoob.com/java/java8-lambda-expressions.html
13、泛型

java 中泛型标记符:

  • E - Element (在集合中使用,因为集合中存放的是元素)
  • T - Type(Java 类)
  • K - Key(键)
  • V - Value(值)
  • N - Number(数值类型)
  • - 表示不确定的 java 类型
  • 参考链接:https://www.runoob.com/java/java-generics.html
14、迭代器Iterator
  • 它是一种用于访问集合的方法,可用于迭代 ArrayListHashSet 等集合

  • 迭代器 it 的两个基本操作是 next 、hasNext 和 remove。

  • 调用 it.next() 会返回迭代器的下一个元素,并且更新迭代器的状态。

  • 调用 it.hasNext() 用于检测集合中是否还有元素。

  • 调用 it.remove() 将迭代器返回的元素删除。

  • 参考链接:https://www.runoob.com/java/java-iterator.html

  • Iterator输出集合 sites 中的所有元素

    // 引入 ArrayList 和 Iterator 类
    import java.util.ArrayList;
    import java.util.Iterator;
    
    public class RunoobTest {
        public static void main(String[] args) {
            // 创建集合
            ArrayList<String> sites = new ArrayList<String>();
            sites.add("Google");
            sites.add("Runoob");
            sites.add("Taobao");
            sites.add("Zhihu");
    
            // 获取迭代器
            Iterator<String> it = sites.iterator();
    
            // 输出集合中的所有元素
            while(it.hasNext()) {
                System.out.println(it.next());
            }
        }
    }
    
15、API注解
16、注解
  • 内置注解
    @Override //重写
    @Deprecated //已过时的
    @SuppressWarnings(“all”) //抑制警告
  • 元注解
    @Target //谁使用
    @Retention //什么级别使用(运行|class)
17、类的加载
  1. 加载:加载class字节码文件到内存中,并在堆中生成一个代表这个类的java.lang.Class对象
  2. 链接:为类变量(static)分配内存并赋予默认初始值
  3. 初始化:合并所有类变量的赋值动作与静态代码块中的语句
18、反射
  • Class c=类名.Class

  • Class c=对象名.getClass

  • Class c=Class.forName(类路径)

  • Class c=Integer.TYPE

  • 可以通过c进行获取父类类型、对象参数、对象方法、字段、构造器等

            Class c=Class.forName("com.example.mytest.ThreadTest");//通过类路径获取Class对象
            System.out.println("包名+类名="+c.getName());//获取 包名+类名
            System.out.println("类名="+c.getSimpleName());//获取 类名
            Field[] field1=c.getFields();//获取public属性
            Field[] field2=c.getDeclaredFields();//获取全部属性
            for (Field field : field2) {
                System.out.println("属性"+field);
            }
            Method[] method1=c.getMethods();//获取public方法(包括父类)
            Method[] method2=c.getDeclaredMethods();//获取本类方法
            for (Method method : method2) {
                System.out.println("方法="+method);
            }
    
            Constructor[] constructors1=c.getConstructors();//获取public构造器(包括父类)
            Constructor[] constructors2=c.getDeclaredConstructors();//获取本类的构造器
            for (Constructor constructors : constructors1) {
                System.out.println("构造器="+constructors);
            }
    
            ThreadTest threadTest=(ThreadTest)c.newInstance();//构造一个对象,本质时调用无参构造器
            System.out.println(threadTest);
    
            //反射获取一个方法
            Method test = c.getDeclaredMethod("test", String.class);
            test.invoke(threadTest,"小江");//无参时args写null
    
            //反射获取一个属性
            Field field4=c.getDeclaredField("age");//获取public属性
            field4.setAccessible(true);//禁用安全检查,用于修改private属性
            field4.set(threadTest,2323);
            System.out.println(threadTest.getAge());
    
19、项目打包与发布
1、打包
  • 点击 IDEA 右侧的 Maven 点击 claean、install、package
  • Build->Build Artifacts…
  • 参考链接
2、发布
  • 将打包好的包放到*\apache-tomcat-8.5.56\webapps目录下,再启动tomact
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值