【Java基础】Java常用基础知识(一)


菜鸟驿站的评论区还挺有用的

修饰符

访问控制符是一组限定类、属性或方法是否可以被程序里的其他部分访问和调用的修饰符。类的访问控制符只能是空或者 public,方法和属性的访问控制符有 4 个,分别是 public、 private、protected 和 friendly,其中 friendly 是一种没有定义专门的访问控制符的默认情况

  1. private
    用 private 修饰的类成员,只能被该类自身的方法访问和修改,而不能被任何其他类(包括该类的子类)访问和引用。因此,private 修饰符具有最高的保护级别。例如,设 PhoneCard 是电话卡类,电话卡都有密码,因此该类有一个密码域,可以把该类的密码域声明为私有成员。
  2. friendly(默认)
    如果一个类没有访问控制符,说明它具有默认的访问控制特性。这种默认的访问控制权规定,该类只能被同一个包中的类访问和引用,而不能被其他包中的类使用,即使其他包中有该类的子类。这种访问特性又称为包访问性(package private)。
    同样,类内的成员如果没有访问控制符,也说明它们具有包访问性,或称为友元(friend)。定义在同一个文件夹中的所有类属于一个包,所以前面的程序要把用户自定义的类放在同一个文件夹中(Java 项目默认的包),以便不加修饰符也能运行。
  3. protected
    用保护访问控制符 protected 修饰的类成员可以被三种类所访问:该类自身、与它在同一个包中的其他类以及在其他包中的该类的子类。使用 protected 修饰符的主要作用,是允许其他包中它的子类来访问父类的特定属性和方法,否则可以使用默认访问控制符。
    ps:如 Object.class 中的 finalize() 方法,因为有 protected 修饰保护,所以不能直接调用,根据 protected 的规则可知,需要继承并重写才可以用…
  4. public
    当一个类被声明为 public 时,它就具有了被其他包中的类访问的可能性,只要包中的其他类在程序中使用 import 语句引入 public 类,就可以访问和引用这个类。

类中被设定为 public 的方法是这个类对外的接口部分,避免了程序的其他部分直接去操作类内的数据,实际就是数据封装思想的体现。每个 Java 程序的主类都必须是 public 类,也是基于相同的原因。
http://c.biancheng.net/view/965.html
https://www.runoob.com/java/java-modifier-types.html
https://blog.csdn.net/xieyunc/article/details/102643543?spm=1001.2014.3001.5506

基本数据类型

Java语言提供了八种基本数据类型。六种数字类型(四个整数型,两个浮点型)【byte,short,int,long,float,double】,一种字符类型【char】,还有一种布尔型【boolean】。多提一句:三种引用数据类型:数组,类,接口。

Number & Math 类

然而,在实际开发过程中,我们经常会遇到需要使用对象,而不是内置数据类型的情形。为了解决这个问题,Java 语言为每一个内置数据类型提供了对应的包装类。

包装类基本数据类型
Booleanboolean
Bytebyte
Shortshort
Integerint
Longlong
Characterchar
Floatfloat
Doubledouble
在这里插入图片描述
这种由编译器特别支持的包装称为装箱,所以当内置数据类型被当作对象使用的时候,编译器会把内置类型装箱为包装类。相似的,编译器也可以把一个对象拆箱为内置类型。Number 类属于 java.lang 包。

Java Integer类详解:http://c.biancheng.net/view/890.html
Integer 类的常用方法:
parseInt() 方法:https://www.runoob.com/java/number-parseint.html
toString() 方法:https://www.runoob.com/java/number-tostring.html
valueOf() 方法:https://www.runoob.com/java/number-valueof.html

Number & Math 类常用的一些方法:

pow() 求次方方法:https://www.runoob.com/java/number-pow.html
abs() 求绝对值方法:https://www.runoob.com/java/number-abs.html
max() 求两个参数中最大值方法:https://www.runoob.com/java/number-max.html
random() 用于返回一个随机数方法:https://www.runoob.com/java/number-random.html


CharSequence

CharSequence是一个描述字符串结构的接口,在这个接口里面一般发现有三种常用的子类:
它们之间的关系图
通过它们之间的关系图可知:String 继承于CharSequence,也就是说String也是CharSequence类型
CharSequence是一个接口,它只包括 int length(),char charAt(int index),CharSequence subSequence(int start, int end) 这几个API接口。除了String实现了CharSequence之外,StringBuffer和StringBuilder也实现了CharSequence接口。
需要说明的是,CharSequence就是字符序列,String, StringBuilder和StringBuffer本质上都是通过字符数组实现的!

StringBuilder 和 StringBuffer 的区别:
StringBuilder 和 StringBuffer都是可变的字符序列。它们都继承于AbstractStringBuilder,实现了CharSequence接口。
但是,StringBuilder是非线程安全的,而StringBuffer是线程安全的


String 类

在 Java 中字符串属于对象,Java 提供了 String类 来创建和操作字符串。
注意String 类是不可改变的,每次操作都会产生新的String对象,所以你一旦创建了 String 对象,那它的值就无法改变了(详看笔记部分解析)。
如果需要对字符串做很多修改,那么应该选择使用 StringBuffer & StringBuilder 类。


StringBuffer 和 StringBuilder 类

和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象
区别:StringBuilder是非线程安全的,而StringBuffer是线程安全的。
性能:StringBuilder > StringBuffer > String
场景:经常需要改变字符串内容时使用,优先使用StringBuilder,多线程使用共享变量时使用StringBuffer。
主要方法:

方法描述方法
将指定的字符串追加到此字符序列。public StringBuffer append(String s)
将此字符序列用其反转形式取代。public StringBuffer reverse()
移除此序列的子字符串中的字符。public delete(int start, int end)
将 int 参数的字符串表示形式插入此序列中。public insert(int offset, int i)
将 str 参数的字符串插入此序列中。insert(int offset, String str)
使用给定 String 中的字符替换此序列的子字符串中的字符。replace(int start, int end, String str)

数组

https://www.runoob.com/java/java-array.html
https://blog.csdn.net/qq_42142477/article/details/83690665
Arrays 类【重点】


日期时间

https://www.runoob.com/java/java-date-time.html
Java 8 的变化:
https://blog.csdn.net/wangdong5678999/article/details/81159690
https://www.jianshu.com/p/2949db9c3df5

java.util 包提供了 Date 类来封装当前的日期和时间。Java中获取当前日期和时间,使用 Date 对象的 toString() 方法来打印当前日期和时间。

public static void main(String args[]) {
    // 初始化 Date 对象
    Date date = new Date();
    // 使用 toString() 函数显示日期时间
    System.out.println(date.toString());
}

以上实例编译运行结果如下:

Mon May 04 09:51:52 CDT 2013

使用 SimpleDateFormat 格式化日期:
SimpleDateFormat 是一个以语言环境敏感的方式来格式化和分析日期的类。SimpleDateFormat 允许你选择任何用户自定义日期时间格式来运行。例如:

public static void main(String args[]) {
   Date dNow = new Date( );
   SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss");
   System.out.println("当前时间为: " + ft.format(dNow));
}

这一行代码确立了转换的格式,其中 yyyy 是完整的公元年,MM 是月份,dd 是日期,HH:mm:ss 是时、分、秒。
注意:有的格式大写,有的格式小写,例如 MM 是月份,mm 是分;HH 是 24 小时制,而 hh 是 12 小时制。日期和时间的格式化编码详见开头的链接。
以上实例编译运行结果如下:

当前时间为: 2018-09-06 10:16:34

Calendar类的功能要比Date类强大很多,而且在实现方式上也比Date类要复杂一些。
Calendar类是一个抽象类,在实际使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明的,只需要使用getInstance方法创建即可。
创建一个代表系统当前日期的Calendar对象:

Calendar c = Calendar.getInstance();//默认是当前日期

详细见链接。
GregorianCalendar类
Calendar类实现了公历日历,GregorianCalendar是Calendar类的一个具体实现。
Calendar 的getInstance()方法返回一个默认用当前的语言环境和时区初始化的GregorianCalendar对象。
详细见链接。


Java 流(Stream)、文件(File)和IO

https://www.runoob.com/java/java-files-io.html


杂记

JAVA类型直接输入超过10位报The literal XXX of type int is out of range 解决办法:https://blog.csdn.net/xxdw1992/article/details/83927333

Java 实例 - 阶乘:https://www.runoob.com/java/method-factorial.html

Java Scanner 类:https://www.runoob.com/java/java-scanner-class.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值