Java学习总结:7
static关键字
一个类的主要组成就是属性和方法(分为构造方法和普通方法两种),而每一个对象都分别拥有各自的属性内容(不同对象的属性保存在不同的堆内存中),如果类中的某个属性希望定义为公共属性(即所有对象都可以使用的属性),则可以在声明属性前加上static关键字。
class Book12{private String title;private double price;static String pub="清华大学出版社"; //定义一个公共属性pubpublic Book12(String title,double price){this.title=title;this.price=price;}public String getInfo(){return "图书名称:"+this.title+",价格:"+this.price+",出版社:"+this.pub;}
}
public class Test1_1_3_1 {public static void main(String args[]){Book12 ba=new Book12("Java开发",10.2);Book12 bb=new Book12("Android开发",11.2);Book12 bc=new Book12("Oracle开发",12.2);ba.pub="北京大学出版社"; //修改了公共属性pub的内容System.out.println(ba.getInfo());System.out.println(bb.getInfo());System.out.println(bc.getInfo());}
}
//结果:
//图书名称:Java开发,价格:10.2,出版社:北京大学出版社
//图书名称:Android开发,价格:11.2,出版社:北京大学出版社
//图书名称:Oracle开发,价格:12.2,出版社:北京大学出版社
由上可知,任何一个对象修改了该公共属性的内容都将影响其他对象。
Java常用的内存区域:
栈内存空间:保存所有的对象名称(更准确地说是保存引用的堆内存空间的地址);
堆内存空间:保存每个对象的具体属性内容;
全局数据区:保存static类型的属性;
全局代码区:保存所有的方法定义。
class Book12{private String title;private double price;static String pub="清华大学出版社"; //定义一个公共属性pubpublic Book12(String title,double price){this.title=title;this.price=price;}public String getInfo(){return "图书名称:"+this.title+",价格:"+this.price+",出版社:"+this.pub;}
}
public class Test1_1_3_1 {public static void main(String args[]){System.out.println(Book12.pub); //在没有实例化对象的情况下直接输出属性内容Book12.pub="北京大学出版社"; //修改static属性的内容Book12 ba=new Book12("Java开发",10.9); //实例化Book12对象System.out.println(ba.getInfo());}
}
//结果:
//清华大学出版社
//图书名称:Java开发,价格:10.9,出版社:北京大学出版社
由上可知,在没有实例化对象产生时也可以直接利用Book12类输出或设置static属性的内容,并且此修改的结果将影响以后的Book12对象。
class Book12{private String title;private double price;private static String pub="清华大学出版社";public Book12(String title,double price){this.title=title;this.price=price;}public static void setPub(String p){pub=p;}public String getInfo(){return "图书名称:"+this.title+",价格:"+this.price+",出版社:"+this.pub;}
}
public class Test1_1_3_1 {public static void main(String args[]){Book12.setPub("北京大学出版社");Book12 ba=new Book12("Java开发",10.2);Book12 bb=new Book12("Android开发",11.2);Book12 bc=new Book12("Oracle开发",12.2);System.out.println(ba.getInfo());System.out.println(bb.getInfo());System.out.println(bc.getInfo());}
}
//结果:
//图书名称:Java开发,价格:10.2,出版社:北京大学出版社
//图书名称:Android开发,价格:11.2,出版社:北京大学出版社
//图书名称:Oracle开发,价格:12.2,出版社:北京大学出版社
上面的类中的方法分static方法和非static方法两组,这两组方法间的访问将受到如下限制:
1.static方法不能直接访问非static属性或方法,只能调用static属性或方法;
2.非static方法可以访问static的属性或方法,不受任何限制。
原因如下:
1.所有的非static定义的结构,必须在类已经明确产生实例化对象时才会分配堆空间,才可以使用;
2.所有的static定义的结构,不受实例化对象的控制,即可以在没有实例化对象的时候访问。
static的特点
1.不管有多少个对象,都可以使用同一个static属性;
2.使用static方法可以避免实例化对象调用方法的限制。
代码块
代码块一共分为4种:
1.普通代码块
2.构造块
3.静态块
4.同步代码块(等待多线程时)
1.普通代码块
public class Test1_1_3_2 {public static void main(String args[]){{ //普通代码块int num=10; //局部变量System.out.println("num="+num);}int num=100; //全局变量System.out.println("num="+num);}
}
//结果
//num=10
//num=100
2.构造块
class Book13{public Book13(){System.out.println("[A]Book13构造方法");}{ //将代码写在类里,所以为构造块System.out.println("[B]Book13类中的构造块");}
}
public class Test1_1_3_2 {public static void main(String args[]){new Book13();new Book13();}
}
//结果
//[B]Book13类中的构造块
//[A]Book13构造方法
//[B]Book13类中的构造块
//[A]Book13构造方法
3.静态块
如果一个代码块使用static定义,就称为静态块。
3.1在非主类中使用
class Book13{public Book13(){System.out.println("[A]Book13构造方法");}{ //将代码写在类里,所以为构造块System.out.println("[B]Book13类中的构造块");}static { //定义静态块System.out.println("[C]Book13类中的静态块");}
}
public class Test1_1_3_2 {public static void main(String args[]){new Book13();new Book13();}
}
//结果
//[C]Book13类中的静态块
//[B]Book13类中的构造块
//[A]Book13构造方法
//[B]Book13类中的构造块
//[A]Book13构造方法
可以发现当有多个实例化对象产生时,静态块会优先调用,而且只调用一次。静态块的作用一般可以为static属性初始化。
3.2在主类中定义
public class Test1_1_3_2 {public static void main(String args[]){System.out.println("Hello World");}static {System.out.println("He");}
}
//结果
//He
//Hello World
静态块优先于主方法运行。
相关文章:

mybatis 使用resultMap实现数据库的操作
resultType:直接表示返回类型 resultMap:对外部resultMap的引用 二者不能同时使用 创建一个实体类Role和User public class Role {private Integer id;private String roleCode;private String roleName;//省略set、get方法 创建User类(在User中有roleId…

【3DMax教程】三维产品可视化视频教程 3d Products Visualization Course
【3DMax教程】三维产品可视化视频教程 3d Products Visualization Course 三维产品可视化课程 教程大小:5.38G 1280X720 含课程素材文件 你会学到什么 项目简介及其必须包含的内容 蓝图以及如何获得和使用 逐步建模流程 如何制作UV和纹理 用UV投射材料 生成…
Spring MVC 和WebFlux 区别
本节主要对比了WebMvc 和 WebFlux两个Web框架,Spring已经为我们开发做了很大努力了,所以在合适的场景下这种异步框架还是非常可行的。但是还要考虑后期其它异步框架是否能够完善,全链路异步才能发挥异步最大的优势。

Cygwin鸡毛蒜皮
2019独角兽企业重金招聘Python工程师标准>>> Windows命令乱码: cygwin控制台mintty的编码缺省是UTF-8, 右键调整mintty选项[text] 改编码为GBK UNIX路径和Windows路径互转: 使用cygpath工具. 如: #cd cygpath C:\\Windows 安装包管理器apt-cyg: 安装: # svn --fo…

Using unique option prefix myisam-recover instead of myisam-recover-option
[转载]关于mysql error.log报"Using unique option prefix myisam-recover instead of myisam-recover-options ..."转载:http://blog.csdn.net/cloud_xy/article/details/21756601启动时日志中有这个警告的:[Warning] Using unique option pr…

Maya硬表面建模学习教程 Master Hard Surface Modeling in Maya 2020
Maya硬表面建模学习教程 Master Hard Surface Modeling in Maya 2020 流派:电子学习| MP4 |视频:h264,1280720 |音频:aac,48000 Hz 语言:英语 中文字幕(机译)原英文字幕 |大小:33.0 GB | 145节课程| (36h 18m) 你会学到什么 云…

Java学习总结:8
链表 class Node2{ //定义一个节点private String data;private Node2 next; //要保存的下一个节点public Node2(String data){ //每一个Node2对象都必须保存相应的数据this.datadata;}public void setNext(Node2 next){this.nextnext;}public Node2 getNext(){return this.…

(原创)c#学习笔记10--定义类成员03--接口的实现01--显示实现接口成员
10.3 接口的实现 在继续前,先讨论一下如何定义和实现接口。第9章介绍了接口定义的方式与类相似,使用的代码如下: interface IMyInterface {// Interface members. } 接口成员的定义与类成员的定义相似,但有几个重要的区别&#…

JVM架构解析
本文阐述了JVM的构成和组件,配图清晰易懂,是学习Java开发者的入门必读文章。 每个Java开发人员都知道字节码经由JRE(Java运行时环境)执行。但他们或许不知道JRE其实是由Java虚拟机(JVM)实现,JV…

cmd实用命令
1.netstat 查看电脑端口状况 实际应用举例:查看某软件坚监听的电脑端口。 在任务管理器中选择列...,打开PID的显示。在这里查看某个应用程序的线程ID是多少。例如QQ:4904. 运行,cmd,输入netstat -ano,显示当…

嵌入式BootLoader技术内幕(三)
四、 关于串口终端 在 boot loader 程序的设计与实现中,没有什么能够比从串口终端正确地收到打印信息能更令人激动了。此外,向串口终端打印信息也是一个非常重要而又有效的调试手段。但是,我们经常会碰到串口终端显示乱码或根本没有显示的问题…

Maya 2020面部绑定动画学习视频教程 Facial Rigging 101 – Maya 2020
Maya 2020面部绑定动画学习视频教程 Facial Rigging 101 – Maya 2020 时长:16h 55m |视频:. MP4 1280x720,30 fps(r) |音频:AAC,44100 Hz,2ch |大小:15.5 GB 共62小节课程 流派:电子学习|语言:英语中文字幕(机译)含…

Java学习总结:9
继承 继承性是面向对象的第二大主要特征,而继承性要解决的就是代码重用的问题,利用继承性可以从已有的类继续派生出新的子类,也可以利用子类扩展出更多的操作功能。 继承的实现 继承的格式 class 子类 extends 父类 {}子类实际上是将父类…

转 小辉_Ray CORS(跨域资源共享)
前言:上一篇文章在写如何使用JSONP实现跨域请求的时候,偶然间提到CORS,即Cross-Origin Resource Sharing(跨域资源共享)。虽然前些天也看了一下CORS相关的文章,但是今天兴趣一来还是亲自地写篇博客来研究一…

使用dd命令复制ASM磁盘的spfile
通过下面sql查询参数文件在ASM磁盘中的AU分布SELECT x1.file_number,x1.name,x2.GROUP_KFFXP,x2.DISK_KFFXP,x2.AU_KFFXP,x3.pathFROM (SELECT *FROM (SELECT t1.GROUP_NUMBER, t1.FILE_NUMBER, t2.NAME, rownum AS rnFROM v$asm_file t1LEFT JOIN v$asm_alias t2ON t1.FILE_NU…

[转载]IPMSG(飞鸽传书)协议翻译
/***********************************************************本人(ypxing)根据下面的协议,C语言写的ipmsg(聊天,文件/文件夹传输)*请参见:http://blog.chinaunix.net/u1/35100/showart_689330.html**************************************…

SketchUp Pro 2021基础入门学习视频教程
SketchUp Pro 2021基础入门学习视频教程 1280X720 MP4 |视频:h264,1280720 |音频:AAC,44.1 KHz,2 Ch 流派:电子学习|语言:英语中文字幕(根据原英文字幕机译更准确) |时长:74节课(7h 31m) |大小:4.9 GB 含课程工程文件…

Java学习总结:10
覆写 在子类定义属性或方法时,有可能出现定义的属性或方法与父类同名的情况,这样的操作就称为覆写。 方法的覆写 当子类定义了和父类的方法名称、返回值类型、参数类型及个数完全相同的方法时,就称为方法的覆写。 class A1{public void f…

ubuntu中启用ssh服务
ssh程序分为有客户端程序openssh-client和服务端程序openssh-server。如果需要ssh登陆到别的电脑,需要安装openssh-client,该程序ubuntu是默认安装的。而如果需要从远程连接到本机,则需要安装openssh-server,该程序需要自己安装。…

JVM 常见异常及内存诊断
栈内存溢出 栈内存大小设置:-Xss size 默认除了window以外的所有操作系统默认情况大小为 1MB,window 的默认大小依赖于虚拟机内存。 栈帧过多导致栈内存溢出 下述示例代码,由于递归深度没有限制且没有设置出口,每次方法的调用都…

解决文字无法缩小的问题
在css设置文字大小的时候,到12px 的时候你在怎么缩小他,他的大小就是不变font-size:百分比来控制也不起作用-webkit-transform: scale(0.8); -o-transform: scale(1); display: inline-block; 转载于:https://www.cnblogs.com/xinlinux/p/408…

asp.net图片浏览器效果
技术来源于同学会实践 前台设计 <% Page Language"C#" AutoEventWireup"true" CodeFile"txh.aspx.cs" Inherits"txh" %> <!DOCTYPE html> <html xmlns"http://www.w3.org/1999/xhtml"> <head runat&qu…

Blender材质和着色基础视频教程 CGCookie – Fundamentals of Blender Materials and Shading
Blender材质和着色基础视频教程 CGCookie – Fundamentals of Blender Materials and Shading Blender材质和着色基础视频教程 CGCookie – Fundamentals of Blender Materials and Shading CGCookie–Blender材质和着色基础 教程大小解压后:3.1G 共6大章 45小节课…

Java学习总结:11(final关键字)
final关键字 在Java中final称为终结器,在Java中可以使用final定义类、方法和属性。 一.使用final定义的类不能再有子类,即:任何类都不能继承以final声明的父类。 在设计类的时候,如果这个类不需要有子类,类的细节不…

2022-2028年中国汽车制动器行业投资分析及前景预测报告
【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国汽车制动器行业市场行业相关概述、中国汽车制动器行业市场行业运行环境、分析了中国汽车制…
[转]优秀编程的“艺术”
优秀的代码是一件艺术品?或者软件工艺宣言言过其实了?成为一名“优秀”的程序员,有什么要求? 设想你雇佣了一名水管工,让他更换地下室的旧管道。这个家伙在工作之前、之中、之后,他就没有停止过谈论他的管道…

洛谷 P5019 铺设道路(差分)
嗯... 题目链接:https://www.luogu.org/problem/P5019 首先简化一下题意: 给定一个长为N的数组,每次操作可以选择一个区间减去1,问最少多少次操作可以将数组中的数全变成0 N≤100000 思路: 首先对于第一个数字d_1我们至…

1小时教你做360度全景“小星球”效果图 Skillshare – Create a Panoramic ‘Little Planet’ from Anywhere
1小时教你做360度全景“小星球”效果图 Skillshare – Create a Panoramic ‘Little Planet’ from Anywhere 1小时教你做360度全景“小星球”效果图 Skillshare – Create a Panoramic ‘Little Planet’ from Anywhere 时长1h 2m 1280X720 MP4 语言:英语中文字幕…

BIO、NIO、AIO详解
BIO(Blocking I/O)就是传统的Java IO编程,其相关的类和接口在java.io包下。BIO是同步阻塞的,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,可以通过线程池机制改善(实现多个客户连接服务器)服务器端启动一个,注册端口,调用accpet方法监听客户端的Socket连接客户端启动Socket对服务器进行通信,默认情况下服务器端需要对每个客户建立一个线程与之通讯。

Java学习总结:12
多态性 1.方法的多态性:重载和覆写 重载:同一个方法名称,根据不同的参数类型及个数可以完成不同的功能; 覆写:同一个方法,根据不同的实例化的子类对象不同,所完成的功能也不同。 2.对象的多态性…