JAVA 学习笔记

Java 基础学习总结(上)

一、Java第一二季学习笔记

1. Java 中的类和对象

1.Java 中的属性可以理解为   有什么,方法表示可以  干什么。

2.类名 第一个 字母 要大写

2. Java中的成员变量和局部变量

1.编译器会自动给 成员变量(全局变量)赋初值(0),而不会自动给局部变量赋初值。

2.两类变量同名时,局部变量具有更高的优先级。

3.构造方法

1.使用new + 构造方法 创建一个新的对象。
2.构造方法是定义在Java类中的一个用来初始化对象的方法。
3.构造方法与类同名,且没有返回值。
4.构造方法的重载(编译器会自动选择对应的构造方法)

4.静态方法static

1.静态方法中可以直接调用**同类**中的静态成员,但不能直接调用非静态成员。
2. 在普通成员方法中,则可以直接访问同类的非静态变量和静态变量
3. 静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法。

5.初始化块

1.在类的声明中,可以包含多个初始化块,当创建类的实例时,就会依次执行这些代码块。如果使用 static 修饰初始化块,就称为静态初始化块。

需要特别注意:静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。
封装
将类的信息隐藏在类的内部,只允许通过类提供的方法来访问。
其他用户可以通过  setter 和 getter  方法 来调用和使用。
Java中包的命名是 全小写字母拼写

6.super关键字

super.eat()   //访问父类的方法

super.age   // 访问父类的属性

如果显示的调用构造方法,必须在子类构造方法的第一行

7.Object类

如果不 重写  tostring() 方法,编辑器只会默认输出 哈希码,在内存中的地址

equals() 方法  ,比较的是对象的引用是否指向同一块内存区域

8.多态

对象的多种形态
1.引用多态
父类的引用可以指向 本类 的对象
    Animal obj1 = new Animal()
父类的引用可以指向 子类 的对象
    Animal obj2 = new dog()
继承是多态的基础

二、Java 第三季 学习笔记

一、 Java中常见的类

1. string类中的常用方法

这里写图片描述

例如下面的代码:

public class HelloWorld {
    public static void main(String[] args) {
        // Java文件名
        String fileName = "HelloWorld.java"; 
        // 邮箱
        String email = "laurenyang@imooc.com";

        // 判断.java文件名是否正确:合法的文件名应该以.java结尾
        /*
        参考步骤:
        1、获取文件名中最后一次出现"."号的位置
        2、根据"."号的位置,获取文件的后缀
        3、判断"."号位置及文件后缀名
        */
        //获取文件名中最后一次出现"."号的位置
        int index = fileName.lastIndexOf(".");

        // 获取文件的后缀
        String prefix = fileName.substring(index+1,fileName.length());

        // 判断必须包含"."号,且不能出现在首位,同时后缀名为"java"
        if (index!=-1 && index!=0 && prefix.equals("java")) {
            System.out.println("Java文件名正确");
        } else {
            System.out.println("Java文件名无效");
        }

        // 判断邮箱格式是否正确:合法的邮箱名中至少要包含"@", 并且"@"是在"."之前
         /*
        参考步骤:
        1、获取文件名中"@"符号的位置
        2、获取邮箱中"."号的位置
        3、判断必须包含"@"符号,且"@"必须在"."之前
        */
        // 获取邮箱中"@"符号的位置
        int index2 = email.indexOf("@");

        // 获取邮箱中"."号的位置
        int index3 = email.indexOf('.');

        // 判断必须包含"@"符号,且"@"必须在"."之前
        if (index2 != -1 && index3 > index2) {
            System.out.println("邮箱格式正确");
        } else {
            System.out.println("邮箱格式无效");
        }
    }
}
2. String 类中的常用方法(二)

1.“ ==” 和 equals() 有什么区别呢?

==: 判断两个字符串在内存中首地址是否相同,即判断是否是同一个字符串对象

equals(): 比较存储在两个字符串对象中的内容是否一致
3.认识 Java 中的 StringBuilder 类
使用 StringBuilder 或 StringBuffer 就可以避免这个问题。至于 StringBuilder 和StringBuffer ,它们基本相似,不同之处,StringBuffer 是线程安全的,而 StringBuilder 则没有实现线程安全功能,所以性能略高。因此一般情况下,如果需要创建一个内容可变的字符串对象,应优先考虑使用 StringBuilder 类。
4.StringBuild 类中的常用方法

这里写图片描述

这些操作修改了 str 对象的值,而没有创建新的对象,这就是 StringBuilder 和 String 最大的区别

public class HelloWorld {
    public static void main(String[] args) {
        // 创建一个空的StringBuilder对象
        StringBuilder str = new StringBuilder();

        // 追加字符串
        str.append("jaewkjldfxmopzdm");

        // 从后往前每隔三位插入逗号
        for(int i=str.length()-3;i>0;i=i-3){
            str.insert(i,','); // 按位置插入  
        }

        // 将StringBuilder对象转换为String对象并输出
        System.out.print(str.toString());
    }

}

5.java 中的包装类
基本数据类型是不具备对象的特性的,比如基本类型不能调用方法、功能简单。。。,为了让基本数据类型也具备对象的特性, Java 为每个基本数据类型都提供了一个包装类,这样我们就可以像操作对象那样来操作基本数据类型。 

基本类型和包装类之间的对应关系:

这里写图片描述

包装类主要提供了两大类方法:

1. 将本类型和其他基本类型进行转换的方法

2. 将字符串和本类型及包装类互相转换的方法

Integer包装类的常用方法:
这里写图片描述

Eg :

public class HelloWorld {
public static void main(String[] args) {

    // 定义int类型变量,值为86
    int score1 = 86; 

    // 创建Integer包装类对象,表示变量score1的值
    Integer score2=new Integer(score1);

    // 将Integer包装类转换为double类型
    double score3=score2.doubleValue();

    // 将Integer包装类转换为float类型
    float score4=score2.floatValue();

    // 将Integer包装类转换为int类型
    int score5 =score2.intValue();

    System.out.println("Integer包装类:" + score2);
    System.out.println("double类型:" + score3);
    System.out.println("float类型:" + score4);
    System.out.println("int类型:" + score5);
    }
}
6.Java 中基本类型和包装类之间的转换
装箱:把基本类型转换成包装类,使其具有对象的性质,又可分为手动装箱和自动装箱

这里写图片描述

拆箱:和装箱相反,把包装类对象转换成基本类型的值,又可分为手动拆箱和自动拆箱

这里写图片描述

eg :

    public class HelloWorld {
        public static void main(String[] args) {

    // 定义double类型变量
    double a = 91.5;

     // 手动装箱
    Double b = new Double(a);      

    // 自动装箱
    Double c = a;   

    System.out.println("装箱后的结果为:" + b + "和" + c);

    // 定义一个Double包装类对象,值为87.0
    Double d = new Double(87.0);

    // 手动拆箱
    double e = d.doubleValue();

    // 自动拆箱
    double f = d;

     System.out.println("拆箱后的结果为:" + e + "和" + f);
}

}

7.Java 中基本类型和字符串之间的转换

基本类型转换为字符串有三种方法:

1. 使用包装类的 toString() 方法

2. 使用String类的 valueOf() 方法

3. 用一个空字符串加上基本类型,得到的就是基本类型数据对应的字符串

这里写图片描述

将字符串转换成基本类型有两种方法:

1. 调用包装类的 parseXxx 静态方法

2. 调用包装类的 valueOf() 方法转换为基本类型的包装类,会自动拆箱

这里写图片描述

8.使用 SimpleDateFormat 类表示时间
1. 使用 format() 方法将日期转换为指定格式的文本

这里写图片描述

2. 使用 parse() 方法将文本转换为日期

这里写图片描述

注意:

1、 调用 SimpleDateFormat 对象的 parse() 方法时可能会出现转换异常,即 ParseException ,因此需要进行异常处理

2、 使用 Date 类时需要导入 java.util 包,使用 SimpleDateFormat 时需要导入 java.text 包

Eg:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class HelloWorld5 { 
public static void main(String[] args) throws ParseException {

    // 使用format()方法将日期转换为指定格式的文本
    SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
    SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd HH:mm");
    SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    // 创建Date对象,表示当前时间
    Date now = new Date();

    // 调用format()方法,将日期转换为字符串并输出
    System.out.println(sdf1.format(now));
    System.out.println(sdf2.format(now));
    System.out.println(sdf3.format(now));

    // 使用parse()方法将文本转换为日期
    String d = "2014-6-1 21:05:36";
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

     // 调用parse()方法,将字符串转换为日期
    Date date = sdf.parse(d);

    System.out.println(date);
    }
}
8.Calendar 类的应用
相对于 Date 类,更好推荐 使用Calendar类方法

   java.util.Calendar 类是一个抽象类,可以通过调用 getInstance() 静态方法获取一个 Calendar 对象,此对象已由当前日期时间初始化,即默认代表当前时间,如 Calendar c = Calendar.getInstance();

这里写图片描述

    Calendar 类提供了 getTime() 方法,用来获取 Date 对象,完成 Calendar 和 Date 的转换,还可通过 getTimeInMillis() 方法,获取此 Calendar 的时间值,以毫秒为单位。如下所示:

这里写图片描述

9.使用 Math 类操作数据
Math 类位于 java.lang 包中,包含用于执行基本数学运算的方法, Math 类的所有方法都是静态方法,所以使用该类中的方法时,可以直接使用类名.方法名,如: Math.round();

常用的方法:

这里写图片描述

Eg:

这里写图片描述

二、JAVA Socket应用

  1. 两台计算机通过网络进行通信的基础:
    1)IP 地址 (同一个网段)

    TCP / IP协议是世界上应用最为广泛的协议。
    TCP :传输控制协议
    IP : 网络协议

    2)协议
    3)端口

    1)用于区分不同的应用程序
    2)端口号范围为 0~65535,其中 0~1023为系统所保留。
    3)IP地址和端口号组成了所谓的 Socket,Socket是网络上运行的程序之间双向通信链路的终结点,是TCP 和 UDP的基础。
    4)常用的端口号http:80 ftp:21 telnet:23

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值