1.IDEA项目结构

层级关系:

project(工程)-module(模块)-package(包)-class(类)

具体的:

一个project中可以创建多个module

一个module可以创建多个package

一个package中可创建多个class

 1.1.Project和Module的概念

IntelliJ IDEA 中,提出了ProjectModule这两个概念。

  IntelliJ IDEA Project 最顶级的结构单元 ,然后就是Module。目前,主流的大型项目结构基本都是
Module的结构,这类项目一般是 按功能划分 的,比如:user-core-moduleuser-facade-moduleuser-
hessian-module等等,模块之间彼此可以 相互依赖 ,有着不可分割的业务关系。因此,对于一个Project
来说:

  • 当为单Module项目的时候,这个单独的Module实际上就是一个Project
  • 当为多Module项目的时候,多个模块处于同一个Project之中,此时彼此之间具有互相依赖的关联关系。
  • 当然多个模块没有建立依赖关系的话,也可以作为单独一个小项目运行。

1.2.创建Module

建议创建“Empty空工程,然后创建多模块,每一个模块可以独立运行,相当于一个小项目。JavaSE阶段
不涉及到模块之间的依赖。后期再学习模块之间的依赖。

步骤:

1)选择创建模块

 2)选择模块类型:这里选择创建Java模块,给模块命名,确定存放位置

 4)模块声明在工程下面

 1.3.删除模块

1)移除模块

 

 2)彻底删除模块

 1.4.导入老师的模块

1)将老师的模块 teacher_chapter04 整个的复制到自己IDEA项目的路径下

 

 接着打开自己IDEA的项目,会在项目目录下看到拷贝过来的module,只不过不是以模块的方式呈现。

 2)查看Project Structure,选择import module

 3)选择要导入的module

 4)接着可以一路Next下去,最后选择Overwrite

 最后点击ok即可了

1.5.同事打开两个IDEA项目工程

 1、两个IDEA项目工程效果

有些同学想要把上课练习代码和作业代码分开两个IDEA项目工程。

2、新建一个IDEA项目

 注意:第一次需要新建,之后直接打开项目工程即可

 3、打开两个IDEA项目

 1.6.导入前几章非IDEA工程代码

1、创建chapter01chapter02chapter03等章节的module

 

将相应章节的源文件粘贴到modulesrc下。

 打开其中各个源文件,会发现有乱码。比如:

 2、设置编码
当前项目是UTF-8。如果原来的.java文件都是GBK的(如果原来.java文件有的是GBK,有的是UTF-8就比较
麻烦了)。
可以单独把这两个模块设置为GBK编码的。

 改为GBK,确认即可。如图:

2.代码模板的使用

2.1 查看Postfix Completion模板(后缀补全)

 2.2 查看Live Templates模板(实时模板)

2.3 常用代码模板

1、非空判断

  • 变量.nullif(变量 == null)变量.nn
  • if(变量 != null)变量.notnullif(变量 != null)
  • ifnif(xx == null)
  • innif(xx != null)
public class index {
    public static void main(String[] args) {
        //1.非空判断,定义一个str变量名,后缀补全
        String str="hello";
        int number=110;
        if(str==null){

        }
        //str变量名.null
        if (str == null) {

        }
        //str变量名.nn
        if (str != null) {

        }
        //str变量名.notnull
        if (str != null) {

        }
        //ifn
        if (str == null) {

        }
        //inn
        if (str != null) {

        }

    }
}

2、遍历数组和集合

  • 数组或集合变量.forifor循环
  • 数组或集合变量.for:增强for循环
  • 数组或集合变量.forr:反向for循环
  • 数组或集合变量.iter:增强for循环遍历数组或集合
import java.util.ArrayList;

public class index {
    public static void main(String[] args) {
        //遍历数组、集合
        int[]arr=new int[]{2,10,20,30,40,50}; //创建数组
        //一般的for循环:变量名arr.fori
        for (int i = 0; i < arr.length; i++) {
            
        }
        //增强的for循环:变量名arr.for
        for (int i : arr) {
            
        }
        //倒序的for循环:forr
        for (int i = arr.length - 1; i >= 0; i--) {
            
        }
        testArr(); //在main包下调用函数
        //增强的for循环遍历数组或集合:arr.iter
        for (int i : arr) {

        }
        ArrayList list=new ArrayList(); //创建一个数组
        //变量名list.fori
        for (int i = 0; i < list.size(); i++) {
            
        }
        //变量名list.for
        for (Object o : list) {
            
        }
        //变量名list.forr,倒序
        for (int i = list.size() - 1; i >= 0; i--) {
            
        }
        //变量名list.iter
        for (Object o : list) {
            
        }

    }
/*
* 题目:提供一个数组int[] arr=new int[]{2,20,30,40,50,60};
* 遍历数组每一个元素,将数组每个位置的元素与第1个元素做除法,得到的结果作为该位置上的新值
*
* */
    public static void testArr(){
        int[] arr=new int[]{2,20,30,40,50,60};
        //错误的写法
//        for (int i = 0; i < arr.length; i++) {
//            arr[i]=arr[i]/arr[0];
//        }
        //解决方案:倒序的写法,会依次从60/2,50/2,40/2开始循环
        for (int i = arr.length - 1; i >= 0; i--) {
            arr[i]=arr[i]/arr[0];
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}

3、输出语句

  • sout:相当于System.out.println
  • soutm:打印当前方法的名称
  • soutp:打印当前方法的形参及形参对应的实参值
  • soutv:打印方法中声明的最近的变量的值
  • 变量.sout:打印当前变量值
  • 变量.soutv:打印当前变量名及变量值
import java.util.Arrays;

public class index {
    public static void main(String[] args) {
        //输出语句,简略写法:sout
        System.out.println(123);
        System.out.println("hello baby");
        //简略写法:soutm
        System.out.println("index.main"); //打印当前的方法名称
        //简略写法:soutp
        System.out.println("args = " + Arrays.toString(args)); //打印当前方法的形参对应的实参值

        int num=10;
        System.out.println("num = " + num); //soutv:打印最近的变量

        String str="baby";
        System.out.println("str = " + str); //soutv:打印最近的变量

        int arr=100;
        System.out.println("arr = " + arr); //soutv:打印最近的变量

        System.out.println("baby"); //写法:"baby".sout

        System.out.println("100 = " + 100); //写法"100".outv

    }
    public void test1(int num,String str){
        //简略写法:soutm
        System.out.println("index.test1");
        //简略写法:soutp
        System.out.println("num = " + num ); //形参
        System.out.println("num = " + num + ", str = " + str); //两个不同类型的形参
    }
}

4、对象操作

  • 4.1、创建对象
  • 1、Xxx.new .var :创建Xxx类的对象,并赋给相应的变量
  • 2、Xxx.new .field:会将方法内刚创建的Xxx对象抽取为一个属性
  • 4.2、强转
  • 对象.cast:将对象进行强转
  • 对象.castvar:将对象强转后,并赋给一个变量
public class index {

    private static String name;

    public static void main(String[] args) {
        //对象操作,Java一切皆对象
        String str1=new String();
        String name = new String(); //String().new创建一个对象,然后在.var复制给一个变量名:name
        index.name = new String();  //String().new创建一个对象,然后在.field会将方法内刚创建的name抽取为一个属性

        Object obj=new String(); //创建一个对象
        String obj1 = (String) obj; //写法obj.cast.var,使用创建的对象.cast,将obj进行强转成字符串,然后用在.var赋值给一个变量名obj1
        String obj2 = (String) obj; //写法obj1.castvar,使用obj对象.castvar强转后赋值给一个变量名

    }
}

5、静态常量声明

  • psfpublic static final
  • psfipublic static final int
  • psfspublic static final String
  • prsfprivate static final
public class index {
    public static final int NUM=10; //写法:psf
    public static final int NUMBER=100; //写法:psfi
    public static final String NAME="彭于晏"; //写法:psfs
    private static final double PI=3.14; //写法:prsf


    public static void main(String[] args) {
       //静态常量声明
        //注意需要在成员变量的位置

    }
}

 3.自定义代码模板

3.1.自定义后缀补全模板

import java.util.ArrayList;


public class TemplatesTest1 {
    public static void main(String[] args) {
        ArrayList<String> list1 = new ArrayList<>(); 写法很长
        ArrayList<String> list = new ArrayList<>(); 简略写法:ArrayList.list按enter即可
        ArrayList<Integer> arry1 =new ArrayList<>(); 简略写法:Integer.list按enter即可
        ArrayList<Double> arry2 =new ArrayList<>(); 简略写法:Double.list按enter即可,这里我们设置了变量名可以自定义
    }
}

 3.2.自定义Live Templates

 例如:定义sop代表System.out.print();语句
①在Live Templates中增加模板

 ②先定义一个模板的组,这样方便管理所有自定义的代码模板

 ③在模板组里新建模板

 ④定义模板(以输出语句为例)

  • Abbreviation:模板的缩略名称
  • Description:模板的描述
  • Template text:模板的代码片段
  • 模板应用范围。比如点击Define。选择如下:应用在java代码中。

其它模板1:单元测试模板:(需要将@Tets用ALT+ENTER创建一个JUnit4包,必须在联网的情况下!)

 其它模板2:创建多线程

 

posted on 2023-09-24 22:25  情生意动  阅读(14)  评论(0)    收藏  举报