Java SE

实训日志(Java SE)


命名习惯:

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

一、基本数据类型

1、基本数据类型:

  • 整形:byte,short,int,long

  • 浮点类型:float(单精度),double(双精度)

    //浮点少用
    BigDecimal bigdecimal;//一般用这个,可自定义小数点后几位
    
  • 布尔类型:boolean(取值:true/false)

  • boolean flag=trueif(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}

在这里插入图片描述

六、面向对象

万物皆对象

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);
         }
    }
    
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寥寥楠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值