美文网首页
初学Java

初学Java

作者: 张虾米试错 | 来源:发表于2020-03-15 23:06 被阅读0次

说来惭愧,作为计算机专业的都不会Java,现在遇到任务了还得“从头开始”。当然,由于有其他语言的基础,所以比真的从零开始还是要容易一些。今天和一位同学也简单聊了一下,他现在也是各种语言切换,跟我分享了一下他的经验:

  1. 学新的语言时,和自己掌握的语言做对比,看看新语言的相关用法是否有对应的用法。
  2. 看别人的代码,刚开始可能不会写,但是因为有编程基础所以基本能看懂别人怎么写的。(这里就突出好的编程习惯和风格是多么重要)先把别人的代码copy过来,然后根据自己需要进行改动。
  3. 多练习。熟能生巧在哪都适用。

本周我也基本是这样过来的。另外,因为上周我知道自己这周要开始写Java,因此趁双休恶补了一些基本语法和基础,感觉还是很有帮助的。在此推荐中国大学MOOC上浙江大学翁恺老师的两门课:《零基础学Java语言》和《面向对象程序设计——Java语言》。翁老师的课非常清晰,而且以实例进行讲解,所以也很适合自己练习。《零基础学Java语言》中即使对一些看似简单的问题也会说明,课程里还有软件下载和安装的步骤说明,真正的无门槛;已经有其他语言基础的可根据自己实际情况进行选择或者快速浏览一边。课程中安装的只是jre,因为课程中只涉及到一些基本用法,所以jre是可以的,但实际开发还是安装jdk。具体jre和jdk的区别《面向对象程序设计——Java语言》经常用一些简单的例子来阐述面向对象的思想,以及一些设计原则,让我受益匪浅。

本周学到的新用法

1. @Getter 、@Setter

这两个的用法是在创建类时,方便写get和set函数。

添加依赖
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.6</version>
            <scope>provided</scope>
        </dependency>
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotNull;

@Getter
@Setter
public class Person {
    @NotNull(message = "Name 不应该为空")
    @JSONField(name="Name")
    private String name;
    @JSONField(name="Age")
    private int age;
    @JSONField(name="Sex")
    private String sex;

    public Person(String name) {
        this.name = name;
    }

    public Person(String name, String sex) {
        this.name = name;
        this.age = 18;
        this.sex = sex;
    }

    public Person(String name, int age, String sex) {
        this.name = name;
        this.age = age;
        this.sex = sex;

    }

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

当我在类上添加@Getter、@Setter,可以通过IDE生成下面的get或set函数。虽然有文章说直接就可以访问get或set函数,但是我没成功。

2. 注解 @NotNull

可以看到上面已经有@NotNUll的注解,在上面的例子中只是起到了注解的作用。不过通过触发valid可以抛出异常,但是我没有成功,暂时作为问题留下来。其他的还有:

@Null  被注释的元素必须为null
@NotNull  被注释的元素不能为null
@NotEmpty  被注释的字符串必须不为null且size>0
@NotBlank 被注释的字符不能为null且不能为空字符串
@AssertTrue  被注释的元素必须为true
@AssertFalse  被注释的元素必须为false
@Min(value)  被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@Max(value)  被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@DecimalMin(value)  被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@DecimalMax(value)  被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@Size(max,min)  被注释的元素的大小必须在指定的范围内。
@Digits(integer,fraction)  被注释的元素必须是一个数字,其值必须在可接受的范围内
@Past  被注释的元素必须是一个过去的日期
@Future  被注释的元素必须是一个将来的日期
@Pattern(value) 被注释的元素必须符合指定的正则表达式。
@Email 被注释的元素必须是电子邮件地址
@Length 被注释的字符串的大小必须在指定的范围内
@Range  被注释的元素必须在合适的范围内

3. Json解析

添加依赖
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.47</version>
        </dependency>
parseArray、parseObject、toJSONString
String jsonStr = "[{\"name\":\"Tim\",\"age\":25,\"sex\":\"male\"},{\"name\":\"Tom\",\"age\":28,\"sex\":\"male\"},{\"name\":\"Lily\",\"age\":15,\"sex\":\"female\"}]";
List<Person> persons = JSONArray.parseArray(jsonStr, Person.class);
Person person = JSONObject.parseObject("{\"name\":\"Tim\",\"age\":25,\"sex\":\"male\"}", Person.class);

// 注意与上面的区别
JSONObject object = JSONObject.parseObject("{\"name\":\"Tim\",\"age\":25,\"sex\":\"male\"}");
String name = object.getString("name");

Person p = JSONObject.parseObject("{\"name\":\"Tim\",\"age\":25,\"sex\":\"male\"}", Person.class);
String strP = JSONObject.toJSONString(p);
@JSONField
//第一种
String jsonStr = "[{\"name\":\"Tim\",\"age\":25,\"sex\":\"male\"},{\"name\":\"Tom\",\"age\":28,\"sex\":\"male\"},{\"name\":\"Lily\",\"age\":15,\"sex\":\"female\"}]";
List<Person> persons = JSONArray.parseArray(jsonStr, Person.class);

//第二种,可以发现与第一种的结果一样
 String jsonStr1 = "[{\"Name\":\"Tim\",\"Age\":25,\"Sex\":\"male\"},{\"Name\":\"Tom\",\"Age\":28,\"Sex\":\"male\"},{\"Name\":\"Lily\",\"Age\":15,\"Sex\":\"female\"}]";
List<Person> persons1 = JSONArray.parseArray(jsonStr1, Person.class);
构造函数的问题
String jsonStr5 = "[{\"name\":\"Tim\",\"sex\":\"male\"},{\"name\":\"Tom\",\"sex\":\"male\"},{\"name\":\"Lily\",\"sex\":\"female\"}]";
List<Person> persons5 = JSONArray.parseArray(jsonStr5, Person.class);

得到的结果,persons5中所有的对象age=0,不明白为什么没有走第二种(含2个参数)的构造函数呢?当含有3个参数的构造函数被注释后,age可以被赋值为18。

4. 依赖冲突

当发生依赖冲突时,执行mvn dependency:tree,查看依赖树,可以看冲突在哪里;然后去掉其中一个依赖即可。

6. 关于JRE、JDK的区别

简单点说,JRE提供了运行环境,JDK是运行环境+开发环境。因为Java是编译型语言,先编译后运行,运行环境和开发环境是分开的。在浙大翁老师的课程中只安装了JRE,程序可以正常编程和运行,这是因为JRE里也有个lib库,里面包含了Java核心类库,也就是说可以满足基本需求。具体更详细的解释可以学习资料 浅谈JDK、JRE、JVM区别与练习

学习资料:

  1. 《零基础学Java语言》
  2. 《面向对象程序设计——Java语言》
  3. 浅谈JDK、JRE、JVM区别与练习
  4. spring 注解验证@NotNull等使用方法

相关文章

  • java基础(一)-String、StringBuffer、St

    java基础-String、StringBuffer、StringBuilder java基础小白,初学java,...

  • 建议新手学java的5个重要阶段

    对于初学者来说,学习Java,需要打好基础,下面介绍学习Java五个必经阶段,希望能让初学Java的人更好的学...

  • Java初学者入门常遇到的五大问题

    Java初学者在学习Java时,难免会遇到各种各样的问题。今天动力节点Java培训的小编就来说说Java初学者常遇...

  • 使用 IntelliJ IDEA 编译时无法加载自定义包的一个原

    关键词:Java;IntelliJ IDEA;classpath;初学者 作为一个 Java 初学者,我第一次使用...

  • Java Web开发过程

    翻看以前初学Java时的笔记,献给初学者的你: 第一个阶段(java基础阶段) 1.java语法 2.面向对象 3...

  • 初学JAVA

    人类发明了计算机,可以应用计算机做很多事。这其中很重要的一步,就是人与计算机之间的沟通,相比人与人之间的沟...

  • Java初学

    Java-SUN 语言平台J2SE(桌面) ,J2ME(移动被安卓所取代),J2EE(企业主要用于web) 1.跨...

  • 初学Java

    说来惭愧,作为计算机专业的都不会Java,现在遇到任务了还得“从头开始”。当然,由于有其他语言的基础,所以比真的从...

  • Java英语

    超全的Java初学必学英语 Java英语学习—— Java 必背英语单词【必收藏】

  • 初学Java编程经常遇到的问题,你们遇到过吗?

    Java初学者在学习Java​时,难免会遇到各种各样的问题。今天小编就来说说Java初学者常遇到的5个问题。看看你...

网友评论

      本文标题:初学Java

      本文链接:https://www.haomeiwen.com/subject/afabehtx.html