【HOW2J】JAVA基础【更新中】

简介

此偏用于记录在HOW2J学习的笔记和练习题的代码

不是很全面,因为我有c++基础,有的比较简单或者类似于c++的就没敲了

面向对象 

类和对象

public class Item {
    String name;
    int price;

    public static void main(String[] args)
    {
        Item blood=new Item();
        blood.name="血瓶";
        blood.price=50;

        Item shoes=new Item();
        shoes.name="草鞋";
        shoes.price=300;

        Item sword=new Item();
        sword.name="长剑";
        sword.price=350;
    }
}

 

属性

public class Hero {
    String name; //姓名
    float hp; //血量
    float armor; //护甲
    int moveSpeed; //移动速度

    /*
    送了多少次
    杀人次数
    助攻次数
    金钱
    补刀数
    攻击速度
    杀人后说的话
    被杀后说的话
     */
    int dead;
    int kill_hero;
    int help;
    int money;
    int kill;
    int attackSpeed;
    String killWords;
    String killedWords;
}

方法

public class Hero {
    String name; //姓名
    float hp; //血量
    float armor; //护甲
    int moveSpeed; //移动速度

    //坑队友
    void keng(){
        System.out.println("坑队友!");
    }

    //获取护甲值
    float getArmor(){
        return armor;
    }
    
    //增加移动速度
    void addSpeed(int speed){
        //在原来的基础上增加移动速度
        moveSpeed = moveSpeed + speed;
    }

    //超神
    void legendary(){
        System.out.println("超神!");
    }

    //获取血量
    float getHP(){
        return hp;
    }

    void recovery(float blood){
        //在原来的基础上增加移动速度
        hp += blood;
    }
    
}

变量

基本变量类型

public class HelloWorld 
{
    public static void main(String[] args)
    {
        double a =3.14;
        double b=2.769343;
        int c=365;
        int d=12;
        char e='吃';
        boolean f=false;        
        String str="不可描述";
        
    }    
}

字面值

创建一个Hero对象会用到new关键字,但是给一个基本类型变量赋值却不是用new. 因为基本类型是Java语言里的一种内置的特殊数据类型,并不是某个类的对象。
给基本类型的变量赋值的方式叫做字面值

当以l或者L结尾的时候,一个整数字面值是long类型,否则就是int类型。 建议使用大写的L而非小写的l,因为容易和1混淆。

当以f或者F结尾的时候,就表示一个float类型的浮点数,否则就是double类型(以d或者D结尾,写不写都可以)

字符的字面值放在单引号中,字符串的字面值放在双引号中

需要注意的是,\表示转义,比如需要表示制表符,回车换行,双引号等就需要用 \t \r \n \" 的方式进行

 

 

 类型转换

 

 

 final

final 修饰一个变量,有很多种说法,比如不能改变等等
准确的描述是 当一个变量被final修饰的时候,该变量只有一次赋值的机会

操作符

Scanner

需要注意的是,如果在通过nextInt()读取了整数后,再接着读取字符串,读出来的是回车换行:"\r\n",因为nextInt仅仅读取数字信息,而不会读取回车换行"\r\n".
所以,如果在业务上需要读取了整数后,接着读取字符串,那么就应该连续执行两次nextLine(),第一次是取走回车换行,第二次才是读取真正的字符串

import java.util.Scanner;

public class ScannerUse {
    public static void main(String args[])
    {
        Scanner s = new Scanner(System.in);
        int i = s.nextInt();
        System.out.println("读取的整数是"+ i);
        String rn = s.nextLine();
        String a = s.nextLine();
        System.out.println("读取的字符串是:"+a);
    }
}

数组

增强型for循环

增强型for循环在遍历一个数组的时候会更加快捷,只能用来取值,却不能用来修改数组里的值

public class Max {
    public static void main(String args[])
    {
        int values[]=new int[]{18,82,65,33,9};
        int maxx=0;
        for(int each:values)
        {
            if(each>maxx)
                maxx=each;
        }
        System.out.println("最大的数为"+maxx);
    }
}

复制数组

数组的长度是不可变的,一旦分配好空间,是多长,就多长,不能增加也不能减少

System.arraycopy(src, srcPos, dest, destPos, length)

public class HelloWorld {
    public static void main(String[] args) {
        int a [] = new int[]{18,62,68,82,65,9};
         
        int b[] = new int[3];//分配了长度是3的空间,但是没有赋值
         
        //通过数组赋值把,a数组的前3位赋值到b数组
         
        //方法一: for循环
         
        for (int i = 0; i < b.length; i++) {
            b[i] = a[i];
        }
        
        //方法二: System.arraycopy(src, srcPos, dest, destPos, length)
        //src: 源数组
        //srcPos: 从源数组复制数据的起始位置
        //dest: 目标数组
        //destPos: 复制到目标数组的启始位置
        //length: 复制的长度       
        System.arraycopy(a, 0, b, 0, 3);
         
        //把内容打印出来
        for (int i = 0; i < b.length; i++) {
            System.out.print(b[i] + " ");
        }
 
    }
}

Arrays

Arrays是针对数组的工具类,可以进行 排序,查找,复制填充等功能。

(1)数组复制

import java.util.Arrays;

public class HelloWorld {
    public static void main(String[] args) {
        int a[] = new int[] { 18, 62, 68, 82, 65, 9 };

        // copyOfRange(int[] original, int from, int to)
        // 第一个参数表示源数组
        // 第二个参数表示开始位置(取得到)
        // 第三个参数表示结束位置(取不到)
        int[] b = Arrays.copyOfRange(a, 0, 3);

        for (int i = 0; i < b.length; i++) {
            System.out.print(b[i] + " ");
        }

    }
}

(2)转换为字符串

Arrays提供了一个toString()方法,直接把一个数组,转换为字符串,这样方便观察数组的内容

import java.util.Arrays;
 
public class HelloWorld {
    public static void main(String[] args) {
        int a[] = new int[] { 18, 62, 68, 82, 65, 9 };
        String content = Arrays.toString(a);
        System.out.println(content);
 
    }
}

(3)排序

import java.util.Arrays;
 
public class HelloWorld {
    public static void main(String[] args) {
        int a[] = new int[] { 18, 62, 68, 82, 65, 9 };
        System.out.println("排序之前 :");
        System.out.println(Arrays.toString(a));
        Arrays.sort(a);
        System.out.println("排序之后:");
        System.out.println(Arrays.toString(a));
 
    }
}

(4)搜索

查询元素出现的位置
需要注意的是,使用binarySearch进行查找之前,必须使用sort进行排序
如果数组中有多个相同的元素,查找结果是不确定的

import java.util.Arrays;

public class HelloWorld {
    public static void main(String[] args) {
        int a[] = new int[] { 18, 62, 68, 82, 65, 9 };

        Arrays.sort(a);

        System.out.println(Arrays.toString(a));
        //使用binarySearch之前,必须先使用sort进行排序
        System.out.println("数字 62出现的位置:"+Arrays.binarySearch(a, 62));
    }
}

(5)判断是否相同

import java.util.Arrays;

public class HelloWorld {
    public static void main(String[] args) {
        int a[] = new int[] { 18, 62, 68, 82, 65, 9 };
        int b[] = new int[] { 18, 62, 68, 82, 65, 8 };

        System.out.println(Arrays.equals(a, b));
    }
}

(6)填充

import java.util.Arrays;
 
public class HelloWorld {
    public static void main(String[] args) {
        int a[] = new int[10];
 
        Arrays.fill(a, 5);
 
        System.out.println(Arrays.toString(a));
 
    }
}

 

posted @ 2022-07-15 11:29  WJEMail  阅读(139)  评论(0编辑  收藏  举报