java(1)


//数组类型
public class Main {

	public static void main(String[] args) 
	{
		int[] ns = new int[5];
		System.out.println(ns[0]);
	}

}

package hello;

//输入程序

import java.util.Scanner;

public class hello
{
    public static void main(String[] args)
    {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入名字");
        String name = scanner.nextLine();
        System.out.println("请输入年龄:");
        int age = scanner.nextInt();
        System.out.printf("Hi, %s, you are %d\n", name, age);
    	//遍历数组
        int[] ns = {1,3,4};
        int size = ns.length;
        for (int i = 0; i < size; i++)
        {
            System.out.println(ns[i]);
        }
        //第二种方法 foreach
        for (int n: ns)
        {
            System.out.println(n);
        }
        //第三种方法
        System.out.println(Arrays.toString(ns));

        //倒序输出
         for (int i = size - 1; i >= 0; i--)
         {
             System.out.println(ns[i]);
         }
         
        //数组排序
        int[] ns = {1,3,4};
        int size = ns.length;
        Arrays.sort(ns);
        System.out.println(Arrays.toString(ns));
	
        * */
        /*
        * java 引用对象,一切标识符都是对于一个对象的引用,
        * java默认是强引用,可以通过手动置null使JVM适时回收对象
        * */

		
        //继承, extends 实现继承
        class Person
        {
            protected String name;
            protected int age;

            public Person(String nameIn, int ageIn)
            {

            }
        }

        class Student extends Person
        {
            private int score;

            public Student(String nameIn, int ageIn, int scoreIn)
            {
                super(nameIn, ageIn);
                score = scoreIn;
            }


            public String hello()
            {
                return "hello,"+ super.name;
            }

        }
        //super 表示父类,子类引用父类的字段时使用super.xxx
        //java会自动添加上 extends Object

        //判断是否是某种类型 instanceof
    }
}

class Person
{
    final String name;

    public Person(String nameIn)
    {
        name = nameIn;
    }

    @Override
    public String toString()
    {
        return "name:" + name;
    }

    @Override
    public boolean equals(Object o)
    {
        if (o instanceof Person)
        {
            Person p = (Person) o;
            return (p.name.equals(this.name));
        }
        return false;
    }

    @Override
    public int hashCode()
    {
        return this.name.hashCode();
    }

    public final String hello()
    {
        return "hello"+name;
    }
}

class Student extends Person
{
    public Student(String nameIn) {
        super(nameIn);
    }

    public void hel()
    {
        String name =  super.name;
    }

}

class Income
{
    protected double income;

    public Income(double incomeIn)
    {
        income = incomeIn;
    }


    public double getTax()
    {
        return income * 0.1;
    }
}

class Salary extends Income
{
    public Salary(double incomeIn) {
        super(incomeIn);
    }

    @Override
    public double getTax()
    {
        if (income < 5000)
            return 0;
        return (income - 5000) * 0.2;
    }
}


        //多态
        // @Override 让编译器检车是否进行了正确的覆写
        Income[] incomes = new Income[] {
                new Income(2000)

        };
        //标记为final,不允许父类对子类覆写
// 抽象类

abstract class Person
{
    public abstract void run();
}


//接口, 比抽象类还要抽象的纯抽象接口,不能有字段,接口默认所有方法是public abstract的
//继承只能继承一个类,接口可以实现多个interface,在接口中可以定义default方法
//接口也可以继承接口
interface Hello
{
    void hello();
}


interface Person extends Hello
{
    default void run()
    {

    }
    String getName();
}

class Student implements Person
{
    private String name;

    @Override
    public void run()
    {

    }

    @Override
    public String getName()
    {
        return null;
    }

    @Override
    public void hello()
    {

    }
}


//包名.类名
//包作用域,没有使用private public protected 就是包作用域
// 会自动import java.lang.* 和 import package 的其他 class

//Java 支持嵌套类
//一个.java文件只能含有一个public类,但可以包括多个非public类,如果有public类,文件名必须和public的类名相同

//jar包jar包相当于目录,可以包含很多.class文件,方便下载和使用;
/*
jar包实际上就是一个zip格式的压缩文件,而jar包相当于目录。如果我们要执行一个jar包的class,就可以把jar包放到classpath中:

java -cp ./hello.jar abc.xyz.Hello
这样JVM会自动在hello.jar文件里去搜索某个类。

那么问题来了:如何创建jar包?

因为jar包就是zip包,所以,直接在资源管理器中,找到正确的目录,点击右键,
在弹出的快捷菜单中选择“发送到”,“压缩(zipped)文件夹”,就制作了一个zip文件。
然后,把后缀从.zip改为.jar,一个jar包就创建成功。
 */
/*
模块:
jar包只是将class存放起来了,并不关心class之间的依赖,模块是 jmod,
模块之间的依赖关系写到了 module-info.class文件中,所有的模块都直接或间接的依赖java.base模块
 */
/*
//StringBuilder是一个可变对象,预分配缓冲区
StringBuilder sb = new StringBuilder(1024);// 预分配空间,
for (int i = 0; i < 10; i++)
{
    sb.append("hello").append(i).insert(0,"hello");
}
字符串比较必须使用equals()
去除首尾空白字符使用trim()
替换字串e.g.
String s = "hello";
s.replace('l', 'w'); // "hewwo",所有字符'l'被替换为'w'
//拼接字符串
String[] s = {"A","B"};
String str = String.join("***",s);
//类型转换
String.valueOf(123); // "123"
String.valueOf(true); // "true"
int n = Integer.parseInt("123");
//String && char[] 相互转化
char[] cs = "hello".toCharArray(); // String->char[]
String st = new String(cs); //char[]->String
//编码转换
byte[] b1 = "hello".getBytes("GBK");
String s1 = new String(b1, StandardCharsets.UTF_8);
//String 和 char是以unicode编码的
 */
/*

    static String buildSelectSql(String table, String[] fields)
    {
        // TODO:
        var s = String.join(", ", fields);
        String str = "SELECT " + s.toString() + " FROM " + table;

        return str;
    }
       String[] fields = { "name", "position", "salary" };
        String table = "employee";
        String select = buildSelectSql(table, fields);
        System.out.println(select);
        System.out.println("SELECT name, position, salary FROM employee".equals(select) ?
                "测试成功" : "测试失败");

        //StringJoiner
        String[] names = {"bob", "alice"};
        StringJoiner sj = new StringJoiner(", ", "hello", "!");
        for (String name : names)
        {
            sj.add(name);
        }
        System.out.println(sj.toString());
 */


        int i = 100;
        Integer n1 = new Integer(i);
        Integer n2 = Integer.valueOf(i);
        Integer n3 = Integer.valueOf("100");
        //int x = n1.intValue();
        //java 编译器可以帮自动在int 和 Integer之间转型
        Integer n = 100; // 编译器自动使用Integer.valueOf(int)
        int x = n; // 编译器自动使用Integer.intValue()
        // 把int 变成 Integer 的赋值写法,称为自动装箱,把 Integer 变成 int 的写法称为自动拆箱
        // Integer 是int 的包装类,由int 基本类型变成了引用类型,
        // 由于被声明为final,所以是不变类,引用类型——比较使用equals
        // 我们把能创建“新”对象的静态方法称为静态工厂方法。Integer.valueOf()就是静态工厂方法,
        // 它尽可能地返回缓存的实例以节省内存。
        // 创建新对象时,优先选用静态工厂方法而不是new操作符
        // 所有整数浮点数都继承自Number
        // 向上转型为Number:
        Number num = new Integer(999);
        // 获取byte, int, long, float, double:
        byte b = num.byteValue();
        //int n = num.intValue();
        long ln = num.longValue();
        float f = num.floatValue();
        double d = num.doubleValue();

/*
javabean 是一种符合命名规范的class,通过getter和setter定义属性

class Person
{
    public String getName()
    {
        return name;
    }

    public void setName(String name)
    {
        this.name = name;
    }

    String name;
}
 */

//枚举类,enum 继承 Enum
    enum Weekday
    {
        Sun(0, "星期天"), Mon(1, "星期一");

        public final int dayValue;
        private final String chinese;

        Weekday(int dayValue, String chinese) {
            this.dayValue = dayValue;
            this.chinese = chinese;
        }
        //toString 本来和 name 都是相仿的,都是返回名字,所以通过override
        @Override
        public String toString()
        {
            return this.chinese;
        }
    }

    Weekday day = Weekday.Sun;
    String s = Weekday.Sun.name(); //"Sun"
    int n = Weekday.Mon.ordinal(); // 1 返回定义的常量的顺序
    //enum && switch
        switch(day)
    {
        case Mon:
            System.out.println(day.toString());
            break;
        case Sun:
            System.out.println(day.toString());
            break;
        default:
            throw new RuntimeException("不是周一和周日");
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值