实训日志(Java SE)


文章目录

  • 实训日志(Java SE)
  • 一、基本数据类型
  • 二、选择结构
  • 三、循环结构
  • 四、方法
  • 五、数组
  • 六、面向对象
  • 1、对象
  • 2、类
  • 3、类的使用
  • 七、三大特性
  • 1、封装
  • 2、继承
  • 3、多态
  • 八、接口
  • 1、接口
  • 2、实现
  • 九、集合
  • 1、List 接口
  • 2、Set
  • 3、Map



命名习惯:

//类名  大驼峰  每个英文单词首字母大写
//变量  小驼峰  首个英文档次首字母小写,其他大写

一、基本数据类型

1、基本数据类型:

  • 整形:byte,short,int,long
  • 浮点类型:float(单精度),double(双精度)
//浮点少用
BigDecimal bigdecimal;//一般用这个,可自定义小数点后几位
  • 布尔类型:boolean(取值:true/false)
boolean flag=true;
    if(flag==true){//这个语法是错误的,虽然能输出
        System.out.println("真!");
    }
//正确用法;
    if(flag){
        System.out.println("真!");
    }
  • 字符:char

2、强制类型转换:

  • 小转大无错误
int num2=byte2;//小转大无错误
byte byte2=(byte)num2;//大转小需强制类型转换,但可能会出现数据错误

3、基本输入输出

Scanner scanner=new Scanner();//来自util.Scanner包
System.out.println("请输入:");
int print=scanner.nextInt();

二、选择结构

  • if-else
if(条件表达式)
{
    复合语句A; //if体
}
else
{
    复合语句B; //else体
}
  • switch-case
switch(expression){
    case value :
       //语句
       break; //可选
    case value :
       //语句
       break; //可选
    //你可以有任意数量的case语句
    default : //可选
       //语句
}

三、循环结构

  • 方式一:先判断条件,再执行循环体
while(){
                                          
}
  • 方式二:先执行循环体,再判断
do{
                                          
}whlie()
                                          
for(初始值;循环条件;变更条件){
                                              
}

四、方法

  • 具有特定功能的代码------>专职专能
  • 重复性的代码
    一、语法:
public static void add(参数1,参数2){}

  • 权限修饰符 public
  • private 私有的、default 默认、protected 受保护的、public 公开
  • 静态 static
  • 表示静态代码块
  • 返回值类型 void
  • 基本数据类型、对象、String等、void无返回值
  • 有返回值:return 只有一个结果,结果类型和返回值类型保持一致
  • 参数列表
  • 形式参数列表;具体传入的值成为实参
  • 递归
  • 自身调用自身、要有跳出条件
  • 经典例子:斐波那契数列、冒泡排序、选择排序、快速排序、归并排序
public static int factorial(int num){
    //num = 5 --> 5*fa(4) fa(4)=4*fa(3)
      //跳出条件
    if(num==1){
        return 1;
    }
    return num * factorial(num:num-1);
}

五、数组

  • **定义:**一组数,一组数据类型相同的数
int arr[]=new int [6]//数组一经定义,长度无法改变
    arr=new int [12];//arr 存储的是首地址
/*
  6:数组长度
  下标:数据在数组中的位置  从0开始
  new:对象 开辟新的内存空间
  Scanner scanner=new Scanner(); Scanner()为构造方法
*/

//赋值 如果指定下标位置没有赋值,会存在一个相应类型的默认值
arr[0]=1;
arr[1]=2;

//数组遍历
for(int i:arr){//增强for循环,快捷键arr.i加回车
    System.out.println(i);
}

for(int i=0;i<arr.length();i++){//普通for循环
    System.out.print("arr["+i+"]:"+arr[i]+" ");
}

//创建数组
//创建并初始化
int[] arr1= new int[]{1,2,3,4,5};//长度为5
System.out.println("数组长度:"+ arr1.length);
int[] arr2={1,2,3,4,5}

Java 实习日志 java项目实训日志实训内容_Java 实习日志

六、面向对象

万物皆对象

1、对象
  • 特征:属性、姓名、身高、体重等。
  • 行为:动作、吃饭、跑步、学习等。
2、类
  • 一组具有相同特征或者行为的对象
public class Person{
    String name;
    int age
    float height;
    float weight;
    /*
    构造方法:有参和无参
    方法重载:在一个类中可以定义多个同名方法,方法名相同,参数列表不同
    */
    public Person(){//无参构造
        
    }
    public Person(Sting name,int age, float height,float weight){
        this.name=name;//this关键字,指代当前类的对象
        this.age=age;
        this.height=height;
        this.weight=weight;
    }
    //方法:就是行为
    public void eat(){
        System.out.println("胡辣汤、胡椒粉、油条、肉盒");
    }
    public void run(){
        System.out.println("跑了10公里");
    }
    public Sting toString(){
        return "name:"+name+"age:"+age+"height:"+height+"weight"+weight;
    }
    
}
3、类的使用
public static void main(String[] args){
    //new 申请内存空间 Person()构造器 类加载器
    Person person =new Person();
    person zcy= new Person("赵琛洋",20,180,160);
    person jyl= new Person("贾元龙",21,185,160);
    

}

七、三大特性

1、封装
  • 尽可能的隐藏对象内部的实现过程,只提供外部的访问方法。
  • 给属性加上私有、同时提供有的方法。
public class Student{
//封装
    private int age;
    private int number;
    private String name;
}
//右键Genernate生成get(),set()方法,构造方法
//类中有默认的无参构造方法
//类中有有参构造方法就必须有无参构造方法
    public Student() {
    }
                      
    public Student(int age, int number, String name) {
        this.age = age;
        this.number = number;
        this.name = name;
    }
                      
    public int getAge() {
        return age;
    }
                      
    public void setAge(int age) {
        this.age = age;
    }
                      
    public int getNumber() {
        return number;
    }
                      
    public void setNumber(int number) {
        this.number = number;
    }
                      
    public String getName() {
        return name;
    }
                      
    public void setName(String name) {
        this.name = name;
    }
2、继承
  • 方法重载:如果父类的方法不能满足子类的需求,子类可以重构方法。
Emp emp =new Emp();
emp.eat();//调用的是重构后的方法。
  • 子类可从父类获取公共(public)的变量、私有(private)无法使用。
Public class Emp extends Person{
    String addr;//变量一经赋值才能使用
    String desc;
                   
    public Emp(){
        super();//指代父类 调用父类的无参构造方法
    }
    //前四个属性来自父类
    public Emp(String name,int age,float height,float weight,String addr,String desc){
        super(name,age,height,weight);//指代父类 调用父类的有参构造方法
                   
        this.addr=addr;
        this.desc=desc;
    }
    @Override
/*
override 重写注解
*/    
       public void eat(){
        System.out.println("烩面、水煎包");
    }
}
3、多态
  • 父类的引用指向子类的对象
  • 父类创建子类的空间,并不能调用子类的方法,只能访问父类的方法和属性
  • 在任意需要父类对象的位置,都可以用子类代替
Person person1= new Emp();
person1.printColor();//只能用父类的方法
      
Emp emp =new Emp();//子类和父类的方法都可以使用
emp.print();
emp.printColor();

八、接口

1、接口
  • 就是一种约定(常常放在DAO包中)
  • 可以看做特殊的类
  • interface 关键字
  • 内部只存在抽象类:只有方法的声明,没有实现
  • 属性:公开静态不可更改
  • 如果要实现一个接口,需要实现接口中所有的抽象方法
  • java是一门单继承语言,一个类只能有一个直接父类。
  • java是一门多实现语言,接口可以有多个实现的子类,接口可以多继承。
public static final int age;

abstruct 、static 、final,请自行查阅相关资料

public interface PersonDao{
    public abstract Person getPerson();//未省略修饰符和抽象关键字
    Person setPerson();//省略写法
}
2、实现
  • 在DAO包中再新建一个impl包后新建类
Public class PersonDaoImpl implements PersonDao{//abstract省略了
    @Override
    public Person getPerson(){
        System.out.println("获取接口对象");
        return null;
    }
       @Override
    public Person setPerson(){
        System.out.println("设置接口对象");
        return null;
    }
}

九、集合

1、List 接口
  • ArrayList:查询快、增删慢;底层是一个数组,ArrayList是一个可扩容的数组;每次扩容的大小为1.5倍。
  • LinkedList:查询慢,增删快;内存空间是片段的。
public class Test_arraylist{
    public static void main(String[] args){
        //List<object> 泛型 指定当前集合所存储的数据类型 基本数据类型
        //Object 基类 超类 目前已知所有类的父类
        List<String> list = new ArrayList<>();
        //使用方法
        
        //添加
        list.add("饭");
        list.add("肉");
        
        //获取元素 下标从0开始
        list.get(0);//返回下标为0的元素值
        
        //集合的长度
        list.size();
        
        //返回指定元素的下标位置
        list.indexOf("饭");
        
        //设置|修改值
        list.set(1,"蜜雪冰城");
        
        //移除元素,下标和值都可以,若不存在会发生越界错误
        list.remove(0);
        
        //将一个集合的值赋值到另一个集合中。
        list.all();
        
        //清空
        list.clear();
        
        //判空
        list.isEmpty();
        
        //判断是否包含某元素
        list.contains();
    }
}
2、Set
  • 特点:元素不允许重复。
  • HashSet:底层是一个哈希表(散列表)。
  • TreeSet:底层是一个树结构。
public class Test_Set{
     public static void main(String[] args){
         Set<Integer> set =new HashSet<>();
         
         set.add(1);
         set.add(1);//只会存储一个
     }
    
}
3、Map
  • 特点:键值对 双边队列 一个键对应一个值 键是唯一的
  • HashMap
  • TreeMap
  • HashTable
public class Test_map{
      public static void main(String[] args){
         Set<String,Object> hashMap =new HashMap<>();
         //key 底层是一个Set集合(会自动校验,不允许出现重复值)
         //Objetc 各种数据类型
         //添加元素 
          hashMap.put("姓名","赵琛洋");
          
         //修改元素 如果当前键已存在,则覆盖其对应的值
          hashMap.put("姓名","李浩楠");
          
         //删除
          hashMap.remove("姓名");
          
         //判断是否包含当前key值
          hashMap.containsKey("性别");
          
         //判断是否包含value值
          hashMap.containsValue("男");
          
          //替换
          hashMap.put("姓名","贾元龙");
          hashMap.replace("姓名","刘金昌");
          
          //返回所有的key的集合
          Set<String> strings=hashMap.keySet();
          
          //map的遍历,还有其他方式
          for(String s:hashMap.keySet()){
               System.out.println(s+" : "+hashMap.get(s));
          }
          //map的遍历
          Set<Map.Entry<String,Object>>entries = haseMap.entrySet();
           System.out.println(entries);
     }
}