初学Java(2)

一、类、对象的概念及区别
对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
:类是一个模板,它描述一类对象的行为和状态。
创建对象:
对象是根据类创建的。在Java中,使用关键字new来创建一个新的对象。创建对象需要以下三步:
1、声明:声明一个对象,包括对象名称和对象类型。
2、实例化:使用关键字new来创建一个对象。
3、初始化:使用new创建对象时,会调用构造方法初始化对象。
一个类可以包含的类型变量:
1、局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
2、成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。
3、类变量:类变量也声明在类中,方法体之外,但必须声明为static类型。

二、三个访问修饰符以及static、final的使用
Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。
在这里插入图片描述
static的使用:
1.被static所修饰的变量或者方法会储存在数据共享区;
2.被static修饰后的成员变量只有一份!
3.当成员被static修饰之后,就多了一种访问方式,除了可以被对象调用之外,还可以直接被类名调用,(类名.静态成员);
4.static的特点:
(1) .随着类的加载而被加载;
(2).优先于对象存在;被所有对象共享;
5.被static修饰的变量成为静态变量(类变量)或者实例变量;
6.存放位置
(1).类变量随着类的加载而存在于date内存区;
(2)实例变量随着对象的建立而存在于堆内存;

final的用法:
1、final用在类上表示该类不能被继承;
2、final用在方法上表示该方法不能被重写(override);
3、final用在变量上表示该变量一旦被赋值后它的值将不能被改变,也就是相当于一个常数;
final类型的成员变量的初始化方式
1、声明变量时直接赋值;
2、在构造方法中完成赋值;
3、对于static的final类型的成员变量,只能通过在变量声明时直接赋值,不能通过在构造方法中完成赋值,因为static的变量是优先于构造方法执行的,而static的final类型的成员变量在声明时有点特殊:不会被设置成默认的值(如String a;本应该在声明时会自动设置成默认的值“null”);
4、对于final类型的引用变量来说,所谓的不能改变指的是该引用不能被改变,而不是该引用的内容不能被改变,在构造方法中完成赋值的注意点:如果一个类中多个构造方法,那么必须在每个构造方法中对final类型的成员变量赋值,否则将通不够编译;
三、this、super的使用
this的用法在java中大体以分为3种:
1.普通的直接引用,this相当于是指向当前对象本身。
2.形参与成员名字重名,用this来区分:
3.引用构造函数
super也有三种用法:
1.普通的直接引用
与this类似,super相当于是指向当前对象的父类,这样就可以用super.xxx来引用父类的成员。
2.子类中的成员变量或方法与父类中的成员变量或方法同名
3.引用构造函数

四、Java里的保留字
具有专门的意义和用途,不能被当作一般的标识符使用的标识符称为保留字,也称为关键字。保留字不能用来命名类、方法或变量。Java保留字如下:
在这里插入图片描述

五、构造器的引用实例
1、:调用无参构造函数
public void test4() {
//Lambda调用写法
Supplier supplier = () -> new Dept();
//构造器引用
Supplier sup = Dept::new;
}
2、调用一个参数构造函数
public void test5() {
//Lambda调用写法
Function<Long,Dept> function = (x) -> new Dept(x);
//构造器引用
Function<Long,Dept> fun = Dept::new;
}
3、数组引用:
Type::new
public void test6() {
Function<Integer,String[]> function = (x) -> new String[x];
System.out.println(function.apply(10));
}

六、包的概念及导入
如同文件夹一样,包也采用了树形目录的存储方式。同一个包中类名字是不同的,不同包中类的名字可以相同,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。JDK中定义的类就采用了“包”机制进行层次式管理。例如,下图显示了其组织结构的一部分。
在这里插入图片描述

从上图可以看出,一个名为Java的包中又包含了两个子包:io包和lang包。lang包中包含了System、String、Object这三个类的定义。事实上,Java包中既可以包含类的定义,也可以包含子包,或同时包含两者。从逻辑上讲,包是一组相关类的集合,从物理上讲,同包即同目录。
创建包时需要注意如下几点:
(1)创建包时用package关键字;
(2)如果有包声明,包声明一定作为源代码的第一行;
(3)包的名称一般为小写,包名要有意义。
(4)同一个包中的类不需要被导入,当代码使用外部包中的类时,需要用import语句导入包含该类的包。代码使用外部包中的类,另外一个方法是在代码中使用类的完全限定名称。例如,在使用Scanner的代码中,如果省略了导入Scanner的语句,则需要在使用Scanner类的位置使用Java.util.Scanner。Java编译器默认为所有的Java程序引入了JDK的Java.lang 包中的所有的类。其中定义了一些常用类:System、String、Object、Math等。因此我们可以直接使用这些类,而不必显式引入。但使用其他包中的类时,则必须先引入、后使用。

七、基本输入输出
1.向控制台输出数据
标准输出流(System.out)中为人们提供了3种输出方法:
(1)print(输出项):实现不换行输出。输出项可以是变量名、常量、表达式。
(2)println(输出项):输出数据后换行。输出项可以是变量名、常量、表达式。
(3)printf("格式控制部分”,表达式1,表达式2,…表达式n):格式控制部分由“格式控制符”+“普通字符组成”。。。普通字符原样输出;常用的格式控制符有:
%d(代表十进制数)、%c(代表一个字符)、%f(代表浮点数)、%e(代表科学计数法的浮点数)、%s(代表字符串)、%n(代表换行符)。。。。
输出时也可以控制数据的宽度:
%md:输出的int型数组占m列%m.nf:输出的浮点型数组占m列,小数点部分保留n位%.nf:输出的浮点型数据小数部分保留n位
控制台输入数据
1.使用Scanner类---------java.util.Scanner类。
步骤:
----import java.util.*;
----构造Scanner类对象,它附属于标准输入流System.in
如:Scanner sb = new Scanner(System.in);
-----常用的next()方法系列:nextInt():输入整数
nextLine():输入字符串
nextDouble():输入双精度数
next():输入字符串

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值