Java基础知识总结-Static,权限修饰符,代码块,部分常见类

Static

静态关键字可是使用的位置:类,成员变量,成员方法,构造方法,局部变量。主要作用:让成员属于类而不是对象,被所有对象共享。主要用于共享数据。
由static关键词修饰的变量或方法会在内存静态区中单独生成一份用于调用。
区别:
没有Static修饰的room变量存储位置
在这里插入图片描述
room变量会保存在堆中根据new的数量分配多个内存空间来存放room属性。
Static修饰的room变量存储位置
在这里插入图片描述
用static修饰成员变量,称为静态变量或者类变量,是属于类不再属于对象自己。存放在静态存储区中,只有一份,被所有对象共享。方法同理。

静态修饰的成员访问:可以通过对象访问,也可以通过类名访问。

静态修饰成员创建过程:在第一次创建具有静态变量的类对象时,会先给所有静态成员分配内存,然后再给普通成员分配内存,再执行构造方法。之后创建对象静态成员将不再从新分配只分配一次。

静态变量规则:
静态成员可以访问静态成员不能访问非静态成员。因为静态成员比非静态成员先加载。
非静态成员可以访问静态成员。

权限修饰符

权限修饰符用于修饰类,成员变量,成员方法,构造方法(其中类只能用public 和 空白修饰)
在这里插入图片描述

代码块

概念:由{}包括的代码,三类,构造代码块,静态代码块,局部代码块

构造代码块:在类的全局变量的位置创建
在类的构造方法之前执行,所以可以用于完成变量的初始化,但是因为没法接受参数,不够实用所以一般不用它初始化数据。

静态代码块:static修饰的代码块,也在全局变量的位置,因为是静态的所以会在类除不同变量加载之前加载,一般用于对静态变量进行初始化。

局部代码块:在方法中使用的代码块,正常流程执行,用于控制对象的生命周期,早点释放内存。只用一次的变量可以在代码块中定义,在代码块执行完毕后内存释放,而不用等到整个方法执行完成释放。

部分常见的类

1.Object类
所有对象的父类,其中有几个比较常用的方法,也就是所有的类都有的方法。
toString(); 返回类的完全限定名和16位内存地址(一般重写后会返回类中的属性)
equals():返回两个对象是否相等(比较内存地址,重写后一般比较内容)

2.Date,DateFormat类
时间类Date
构造方法
public Date() 用当前系统时间构建一个date对象
public Date(long date) 表示距离0点 一个毫秒值构建date对象
常用方法
public long getTime():返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
public void setTime(long time) 用毫秒值修改date日期
日期格式化类DateFormat
public SimpleDateFormat(String pattern)
参数的格式设置情况有(其中H为24小时制,h为12小时制)
在这里插入图片描述
有个直接子类: SimpleDateFormat:常用方法
public Date parse(String s)
public String format(Date date)

    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日");
  	Date date = new Date();
    String s = simpleDateFormat.format(date);
    System.out.println(s);//xxxx年xx月xx日

	String time = ”2020-01-22“;
	SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
	Date date = simpleDateFormat.parse(time);
	    

3. 日历类_Calendar
创建方式:Calendar rightNow = Calendar.getInstance();
常用方法

  • public int get(int field) 获取日期字段值
  • public void set(int field,int value) 设置日期字段的值
  • public abstract void add(int field,int amount) 给日期字段添加/减少值
     int year = instance.get(Calendar.YEAR);
        int month = instance.get(Calendar.MONTH) + 1;
        int day = instance.get(Calendar.DAY_OF_MONTH);
        int hour = instance.get(Calendar.HOUR_OF_DAY);
        int min = instance.get(Calendar.MINUTE);
        int sec = instance.get(Calendar.SECOND);
        int week = instance.get(Calendar.DAY_OF_WEEK);
        //获得的星期是周日开始的,要自己转换。
        //简单的例子  想知道2020-03-03  是星期几?
            
        Calendar instance1 = Calendar.getInstance();
        instance1.set(Calendar.YEAR,2020);
        instance1.set(Calendar.MONTH,3 - 1);
        instance1.set(Calendar.DAY_OF_MONTH,3);
        int i = instance1.get(Calendar.DAY_OF_WEEK);
        System.out.println("2020-03-03,是:" + getWeek(i));//getWeek()是自己写的转换方法。

4.Math数学类

  • public static int abs(int a) 获取参数a的绝对值:
  • public static double ceil(double a) 向上取整
  • public static double floor(double a) 向下取整
  • public static double pow(double a, double b) 获取a的b次幂
  • public static long round(double a) 四舍五入取整

5.System类
提供了一些获取系统信息的类

     * public static void exit(int status)  终止当前正在运行的 Java 虚拟机。
     * public static long currentTimeMillis()  获取当前系统时间对应的毫秒值
     * public static void arraycopy(Object src,  源数组
     *                              int srcPos,  起始索引
     *                              Object dest, 目标数组
     *                              int destPos, 放到目标数组中哪个索引位置
     *                              int length)  复制多少个元素
     * public static void gc() 运行垃圾回收器。
     * System.exit(0);//0表示正常退出

6.BigDecimal类
用于大数据计算的,解决浮点数精度损失问题.
7.Arrays类
常用方法
public static void sort(int[] a):按照数字顺序排列指定的数组
public static String toString(int[] a):返回指定数组的内容的字符串表示形式
8.包装类
基本数据类型对应的引用数据类就是包装类
在这里插入图片描述
自动装箱和自动拆箱:就是基本数据类型自动和引用数据类型也就是包装类的转换(JDK1.5以后)

Integer integer3 = 1000;//编译后其实 Integer.valueOf(1000)  自动装箱

int a = integer3;//可以直接将包装类赋值给基本类型 integer3.intValue()  自动拆箱

//非自动装箱也拆箱
        Integer integer = new Integer(10);//将基本类型转换为包装类
        System.out.println(integer);
        int i = integer1.intValue();//拆箱
        System.out.println(i);

常用的一些方法
和字符串之间的相互转换

String str = "100";
int i1 = Integer.parseInt(str);
System.out.println(i1);//字符串转Integer

String h = "1.78";
double v = Double.parseDouble(h);
System.out.println(v);//字符串转Double

int s = 100;
String s1 = s + "";
String str2 = Integer.toString(s);
System.out.println(str2);//基本类型转字符串的两种方式
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值