JAVA修练秘籍第五章《卧薪尝胆》

往期:
JAVA 修炼秘籍第一章:《痛苦的折磨》
JAVA 修炼秘籍第二章:《逐渐魔化》
JAVA 修炼秘籍第三章:《绝地反击》
JAVA 修炼秘籍第四章:《闭关修炼》


在这里插入图片描述

文章目录

  • 一、类和对象
    • 1.类的实例化
    • 2.属性
    • 3.方法
  • 二、static关键字
    • 1.修饰属性
    • 2.修饰方法
  • 三、封装
  • 四、构造方法
  • 五、代码块
    • 1.实例代码块
    • 2.静态代码块


一、类和对象

开起重要知识点,JAVA语言是面向对象的,那么什么是面向对象呢?下面图是我脑子里第一个想到的画面请欣赏
在这里插入图片描述

哈哈哈哈,是不是很神奇,但是面向对象真的就是这么甜蜜吗,我们来正确理解一下什么是面向对象。

在这里插入图片描述

注释部分: 面向对象只是一种思考方式,可以把一个复杂的问题变得简单只要面向一个对象即可,类就是一类的统称,对象就是这一类具体化的实例。

1.类的实例化

在这里插入图片描述

通过实例来理解感受,比如有一个很大的花坛,这个花坛可以种很多的花,那么这个花坛就是一个类,由这个花坛(类)可以种(生成)很多的花(对象)。
一个类可以实例化产生很多个对象。
接下来我们看代码中如何生成一个类:

1class Person{2public int age;3public String name;4public String sex;5public void study(){System.out.println("学习");}6public void up(){System.out.println("向上");}}public class Prog {public static void main(String[] args) {7Person person=new Person();8)        person.study();9)        person.up();10System.out.println(person.age);11Person person2=new Person();12Person person3=new Person();}}

注释部分(按照对应数字,进行注释);
1:创建类的关键字class后面Person为类名
2:成员属性,实例变量。
3:与2相同
4:与2相同
5:成员方法
6:与5相同
7:创建Person类的对象,类中的非静态属性与方法都可以通过该对象来进行引用或调用。(非静态与静态后面理解)。
8:对象名加.即可访问类中属性与方法。
9:与8相同。
10:与8相同。
11:我们前面说到,一个类可以创建多个对象,创建过Person我们后续还可以创建很多。
12:与11相同。

注意事项:
1:实例化一个成员需要,为对象分配内存。
2:调用合适的构造方法。

2.属性

如果属性未初始化,那么默认值是多少?属性在创建时除非必要,尽量不要赋初始值。

引用类型默认为  null。
简单类型默认为  0Boolean默认为  falsechar默认为     '\u0000';

3.方法

方法中还有一种方法称为“构造方法” 在实例化对象的时候会被自动调用到的方法, 方法名字和类名相同, 用于对象的初始化.
虽然我们前面已经能将属性就地初始化, 但是有些时候可能需要进行一些更复杂的初始化逻辑, 那么就可以使用构造方法.
后面我们会详细介绍构造方法的语法.

二、static关键字

在这里插入图片描述

static关键字,是可以修饰属性,方法,代码块,类。

1.修饰属性

当你将属性修饰后,这个静态的属性就有类相关,而不是与实例对象相关, 看一段代码,我们通过图片来理解:

class TestDemo{public int a;public static int count; }
public class Main{public static void main(String[] args) {TestDemo t1 = new TestDemo();t1.a++;TestDemo.count++;System.out.println(t1.a);System.out.println(TestDemo.count);System.out.println("============");TestDemo t2 = new TestDemo();t2.a++;TestDemo.count++;System.out.println(t2.a);System.out.println(TestDemo.count);}
}

在这里插入图片描述

注释部分:
1:当属性count被static修饰后,所有类都可以共享,并且不属于对象。
2:访问方式也发生改变,被static修饰后访问形式变为:
类名(TestDemo). 属性(count)

2.修饰方法

修饰方法后称为静态方法,
静态方法属于类,而不属于类的对象。
可以直接调用静态方法,而无需创建类的实例。
静态方法可以访问静态数据成员不可以访问非静态数据成员,并可以更改静态数据成员的值。

class TestDemo{public int a;public static int count;public static void change() {count = 100;//a = 10; 不可以访问非静态数据成员}
}
public class Prog{public static void main(String[] args) {TestDemo.change()//无需创建实例对象 就可以调用System.out.println(TestDemo.count);   }
}

注释部分:
1.静态方法不能直接使用非静态数据成员或调用非静态方法(非静态数据成员和方法都是和实例相关的).
2.this和super两个关键字不能在静态代码块中使用(this 是当前实例的引用, super是当前实例父类实例的引用, 也是和当前实例相关).

三、封装

在这里插入图片描述

在说封装前先理解一下,下面这三位访问修饰限定符是干嘛用的。

public——>公有的。
private——>私有的。
protected——>受保护的。
如果你在创建时什么也不加,默认为——>包访问。

作用:
封装就是用private来修饰属性或方法,修饰后的属性或方法只能在此类中使用。

当修饰过后,安全度大大提高,访问方式方法也不一样了,代码如下:

class Person { private String name;private int age; public void setName(String name){ this.name = name;} public String getName(){ return name; } public void show(){ System.out.println("name: "+name+" age: "+age); } 
} 
public static void main(String[] args) { Person person = new Person(); person.setName("caocao"); String name = person.getName(); System.out.println(name); person.show(); 
}

注释部分:

1.当修饰过后我们发现,类创建的实例对象,没有办法直接进行访问,而是通过类中的方法进行访问,
2.从中可以看出代码的安全程度,也不会随着类中修改属性成员名导致后续代码大费周章。
3.get是获取,set是修改,Alt+insert (f12),可以快捷创建这两个方法。

四、构造方法

在这里插入图片描述

作用:
构造方法是一种特殊方法, 使用关键字new实例化新对象时会被自动调用, 用于完成初始化操作。
在我们通过new创建了一个实例对象后如果你没有创建构造方法,编译器会为你自动创建一个默认无参构造方法来进行初始化,如果自己创建了,编译器则不会自动再生成。
构造方法支持重载,方法与往期内容中的重载方法相同。
下面看一下代码:

class Person {private String name;public Person1() {this.name = "zhang";}public Person2(String name) {this.name = name;}
}
public class Prog{public static void main(String[] args) {Person person = new Person1();Person person2 = new Person("zhang");}
}

注释部分:
Person1为编译器默认生成的构造方法,给实例出来了,正常不会显示。
Person2为自己创建的构造方法
注意事项:
构造方法名必须与类名相同。
构造方法没有返回值类型。
每一个类中都会有一个构造类型,你不创建编译器也会给你默认创建。

五、代码块

在这里插入图片描述

什么是代码块,不知如何为君表达,还是画一下吧。

在这里插入图片描述

每个颜色对应的就是代码块。
代码块分为如下4种:
1:本地代码块——>不常用。
2:实例代码块——>定义在方法的外面,类的里面。
3:静态代码块——>定义在方法的外面,类的里面。
4:同步代码块——>我也不会,嘻嘻。
我们先了解2,3就可以1不常用。

1.实例代码块

构造代码块一般用于初始化实例成员变量,且只能初始化实例成员。
代码如下:

class Person{public String name; {this.name = "zhang"; }
}
public class Prog {public static void main(String[] args) {System.out.println(person.name);}
}

2.静态代码块

使用static定义的代码块。一般用于初始化静态成员属性。且只能初始化静态成员。
代码如下:

class Person{public static String name; {this.name = "zhang"; }
}
public class Prog {public static void main(String[] args) {System.out.println(Person.name);}
}

注意事项:
1.生成多少个静态代码块,都只会执行一个。
2.静态代码块是程序运行时最先执行的。

运行顺序是:
静态代码块——>实例代码块——>构造函数。

本章结束,感谢观光,下章再见。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1619893.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

FreeMarker使用

说明:FreeMake可以通过设置一个模板,使用一些语法规则,可根据返回的VO数据填充到这个模板中,生成一个静态。这个技术,在项目中可以实现如预览页面的功能,将查询完成的VO数据按照这个模板填充,生…

网络模型分析

# 用户空间和内核空间 # 阻塞IO # 非阻塞IO # IO多路复用 IO多路复用-select 内核中遍历找到就绪的fd并保留,不匹配的就置为0, 以上的操作重复,知道所有的FD都完成 IO多路复用-poll IO多路复用-epoll IO多路复用-事件通知机制 很多进程都要用…

魔鬼之城

题目描述 在一个被分割为N*M个正方形房间的矩形魔鬼之城中,一个探险者必须遵循下列规则才能跳跃行动。他必须从(1, 1)进入,从(N, M)走出;在每一房间的墙壁上都写了一个魔法数字,是1~13之内的自然数;探险者可…

心灵毒药之CIA篇(二)

2019独角兽企业重金招聘Python工程师标准>>> 工欲善其事,必先利其器,而且最好是最锋利,最合适的器.因为器能成为你身体的延伸部分,同时还可以成为你信心的来源. 磨器的耐心,用器的巧心,藏器的无心. 转载于:https://my.oschina.net/piginwind/blog/713487

啊,万恶的this

一、全局下,this一般都指向window 全局下,ES5非严格模式,下面的this都是window。 console.log(this); function abc(){console.log(this); } abc();二、对象中的this 1、最常见的this情况: var a100;var obj{a:1,b:function()…

关押罪犯

题目: 描述S 城现有两座监狱,一共关押着 NNN 名罪犯,编号分别为 111 ~ NNN。他们之间的关系自然也极不和谐。 很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突。 我们用 “怨气值”(一个正整数值&#…

罪恶

---- 罪恶 还是属于闲得慌,瞎拍。也许您会帮我想个更棒的标题,或者干脆叫“无题”。 转载于:https://www.cnblogs.com/hzy5901/archive/2010/03/16/5871737.html

游戏开发学什么?四步修炼骨灰级高手

游戏开发学什么?四步修炼骨灰级高手 近日App Store公布了2013年年度最佳游戏奖项,复古风格的捕鱼游戏《奇葩钓鱼》荣获了iPhone平台上年度最佳游戏的殊荣,拥有独特视觉效果的横版冒险游戏《罪恶之地》夺得了iPad平台上年度最佳游戏的桂冠。…

代码随想录打卡—day42—【DP】— 8.27 01背包基础

1 01背包基础 背包概述: 1.1 01背包是什么 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。 1.2 01背包二维数组 二维数组还…

3D飞镖游戏源码ios版

一款ios 3D飞镖游戏源码,通过物理引擎和重力感应来控制飞镖向目标物体击中!游戏比较简单,可以学习一下3D游戏的基本开发. 源码下载: http://code.662p.com/view/6262.html 开发平台: 在xcode 4.3编译通过,iphone4&am…

PS飞镖靶的制作

首先我们在Ps中新建一个600像素*600像素的画布,设置分辨率300/200都可以。 步骤如下: 1.拉出两条参考线,一条垂直居中,一条水平居中。 2.用椭圆工具在两参考线中心点拉出一个圆形,设置颜色红色。用矩形选框工具裁剪掉3…

[SCOI2011]飞镖[数学模拟]

2335: [SCOI2011]飞镖 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 482 Solved: 152[Submit][Status][Discuss] Description 飞镖是在欧洲颇为流行的一项运动。它的镖盘上分为20个扇形区域,分别标有1到20的分值,每个区域中有单倍、双倍和三倍的区…

【题解】[SCOI2011] 飞镖

模拟题 红靶子的我们先不考虑。 如果是 {1,2,2} , {2,2,3} 这种只涉及两种倍数的话,我们想到不定方程: axby c 的通解形式(a,b,c 为常数),从而探讨 x,y 在规定取值内是否有解。 探讨 {1,2,3} 的情况。 …

搭载双筒飞镖?这款无人机太危险

折叠式的设计使之方便携带,堪称猎犬好搭档。 近日,基于SuperDrone无人机,南非Haevic公司改造了一款搭载飞镖枪的无人机——DartDrone,专为兽医及狩猎人员研发。 据悉,SuperDrone是一款采用可折叠结构的六翼无人机&…

BZOJ2335: [SCOI2011]飞镖

Description 飞镖是在欧洲颇为流行的一项运动。它的镖盘上分为20个扇形区域,分别标有1到20的分值,每个区域中有单倍、双倍和三倍的区域,打中对应的区域会得到分值乘以倍数所对应的分数。例如打中18分里面的三倍区域,就会得到54分。…

飞镖(bzoj 2335)

Description 飞镖是在欧洲颇为流行的一项运动。它的镖盘上分为20个扇形区域,分别标有1到20的分值,每个区域中有单倍、双倍和三倍的区域,打中对应的区域会得到分值乘以倍数所对应的分数。例如打中18分里面的三倍区域,就会得到54分。…

飞镖和招聘

4月16日 公司里面玩飞镖的同事越来越多了,不少人都得了飞镖综合症(手酸、腰酸、对休息时间非常敏感)。除了飞镖游戏本身的吸引力,我还发现它有很多和我们从事猎头 招聘非常相似的特征: Know how to close the game. 懂…

java设计飞镖游戏_3分钟手把手带你使用Unity制作“扔飞镖游戏”

原标题:3分钟手把手带你使用Unity制作“扔飞镖游戏” 日落西山红霞飞~战士打靶把营归呀巴扎嘿。今天我制作一个简单的打靶游戏(扔飞镖) 在制作之前首先要思考这个游戏需要什么对象,很简单,一只飞镖、一个靶。 这里我把飞镖设置成了刚体&#…

Leetcode——1453. 圆形靶内的最大飞镖数量

墙壁上挂着一个圆形的飞镖靶。现在请你蒙着眼睛向靶上投掷飞镖。 投掷到墙上的飞镖用二维平面上的点坐标数组表示。飞镖靶的半径为 r 。 请返回能够落在 任意 半径为 r 的圆形靶内或靶上的最大飞镖数。 示例 1: 输入:points [[-2,0],[2,0],[0,2],[0,-…

打印飞镖图形

打印如图下非标 代码如下 #define _CRT_SECURE_NO_WARNINGS #pragma warning(disable:6031) #include<stdio.h> #include<string.h> int main() {int n 0;while (scanf("%d", &n) 1){//上n行int i 0;for (i 0; i < n; i){int j 0;for (j 0…