学习Java的Day05
知识点
关键字,常用类(super,static,final):
super
- 子类对父类的引用,只能在非静态方法中使用
- 引用父类的成员变量的格式为 super.成员变量名称
- 引用父类的非静态方法的格式为 super.方法名(参数列表)
- 引用父类的构造方法的格式为 super(参数列表)
final
- final修饰类这个类就不能被继承,但不影响创建对象,如系统的String类
- final修饰的方法不能被重写,但父类中没有被final修饰方法,子类覆盖后可以加final。
- final修饰局部变量,只能够赋值一次,当修饰的是引用的类型时,不能被重新赋值,但是可以修改对象的属性
- final修饰成员变量,最终的变量,常量,固定的值,一定要初始化,不能被二次赋值。
static(开发中慎用,会很耗内存)
- 静态的,成员信息在类中在方法区中,常量池(常量值),静态内存区(静态成员信息)。
- 不能修饰类,但是可以修饰方法,该方法是静态方法,在类中,通过类区执行调用。
- 被static修饰的变量,是静态变量,在类中。静态全局变量:静态属性-->在类中存储,被所有对象共享。
思考:super,this 与 static 为什么不能共存????
static静态的,是不变的,在java中static修饰成员属性,方法时,表示该属性/方法可以被类名直接调用,如工具类等
而this代表本类对象的引用,通常用与成员变量与局部变量重名时。
super代表子类对父类满参构造函数的初始化,也是需要产生对象才可以使用但是考虑到虚拟机加载顺序为先加载类,当被实例化才产生对象。所以如果并存则表示类和对象同时加载,显然是不合逻辑的。
代码块:
- 局部代码块
- 定义在方法中,用户划分区域的。( {}:作用域啊,划定工作区间 )
- 构造代码块
- 构造代码块和方法并列,定义在类成员变量位置的代码块,每次创建对象的时候都会执行,优先于构造方法
- 内容写的是语句,声明变量,不能实现功能体(方法)。
- 静态代码块
- 定义在类的成员变量位置的用static修饰的代码块。
- 它优先于当前类主方法执行、优先于构造代码块执行,当以任意形式第一次使用到该类时执行。
- 该类不管创建多少对象,静态代码块只执行一次。
- 可用于给静态变量赋值,用来给类进行初始化,初始化成员变量,加载一些成员信息。
执行顺序:父类静态代码块>子类静态代码块>main函数>构造代码块>构造方法
(注意:方法只能并列使用,不能嵌套使用!!!!!!!!!)
访问修饰符
|
–--------------
|
public | protected | default | private |
| 同一类中 | ||||
|
同一包中 (子类与无关类) |
||||
|
不同包的子类
|
||||
|
不同包中的无
关类
|
注意:
对于protected不同包中的子类只能在子类内部调用,在外部子类是无法调用成员变量和方法的
在不同包下的无关类中,只能访问public修饰的成员信息
在不同包的子类中,子类的对象是可以访问被protected修饰的父类的成员信息的
系统常用类:
API ---> Application Interface 应用程序接口
java中的五大常用包: java.lang、 java.util、 java.io、 java.net、 java.sql
object类
equals方法在非空对象引用上实现等价关系:
- 自反性 :对于任何非空的参考值
x,x.equals(x)应该返回true。 - 它是对称的 :对于任何非空引用值
x和y,x.equals(y)应该返回true当且仅当y.equals(x)回报true。 - 传递性 :对于任何非空引用值
x,y和z,如果x.equals(y)回报true个y.equals(z)回报true,然后x.equals(z)应该返回true。 - 它是一致的 :对于任何非空引用值
x和y,多次调用x.equals(y)始终返回true或始终返回false,没有设置中使用的信息equals比较上的对象被修改。 - 对于任何非空的参考值
x,x.equals(null)应该返回false。 - 该
equals类方法Object实现对象上差别可能性最大的相等关系; 也就是说,对于任何非空的参考值x和y,当且仅当x和y引用相同的对象(x == y具有值true)时,该方法返回true。 - 请注意,无论何时覆盖该方法,通常需要覆盖
hashCode方法,以便维护hashCode方法的通用合同,该方法规定相等的对象必须具有相等的哈希码。
toString方法返回一个“textually代表”这个对象的字符串。 结果应该是一个简明扼要的表达,容易让人阅读。 建议所有子类覆盖此方法。
该toString类方法Object返回一个由其中的对象是一个实例,该符号字符`的类的名称的字符串@ ”
和对象的哈希码的无符号的十六进制表示。
换句话说,这个方法返回一个等于下列值的字符串:
getClass().getName() + '@' + Integer.toHexString(hashCode())
string类
String类代表字符串。 Java程序中的所有字符串文字(例如"abc")都被实现为此类的实例。字符串不变; 它们的值在创建后不能被更改。 字符串缓冲区支持可变字符串。
因为String对象是不可变的,它们可以被共享。
练习代码:
/*
自己创建一个类,写一个静态方法,传入一个int数组,得 到一个字符串[元素1,元素2,….]
*/
public class HomeWork02 {
public static void main(String[] args) {
int[] arr = new int[]{1,55,66,99,88,74,22,44,32,22}; System.out.print("[");
for (int i = 0;i<arr.length;i++){ if (i!=arr.length-1){
System.out.print(arr[i]+",");
}else {
System.out.print(arr[i]);
}
}
System.out.println("]");
}
}
public class HomeWork01 {
public static void main(String[] args) {
// 在控制台输入字符串,统计出大写的字符的个数,小写的字符个数,数字类型的字符个数,以及其他字符的个数
Scanner sc = new Scanner(System.in);
int big = 0;
int small = 0;
int num = 0;
int other = 0;
System.out.println("请输入一串字符串");
String str = sc.next();
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) >= 65 && str.charAt(i) <= 90) {
big++;
} else if (str.charAt(i) >= 97 && str.charAt(i) <= 122) {
small++;
} else if (str.charAt(i) >= 48 && str.charAt(i) <= 57) {
num++;
} else {
other++;
}
}
System.out.println("大写字母有:" + big + "个");
System.out.println("小写字母有:" + small + "个");
System.out.println("数字有:" + num + "个");
System.out.println("其他字符有:" + other + "个");
}
}
学习Java的Day05的更多相关文章
- 零基础如何学习java更有效呢?
零基础学java,不知道该如何入手?也不知道学习的方向,很多人会问零基础怎么样学习,有没有什么入门的书籍推荐:只要方法正确,零基础学好java也是有机会的哦. 一.理解Java思想 Java是一门面向 ...
- 积极主动敲代码,使用Junit学习Java程序设计
积极主动敲代码,使用JUnit学习Java 早起看到周筠老师在知乎的回答软件专业成绩很好但是实际能力很差怎么办?,很有感触. 从读大学算起,我敲过不下100本程序设计图书的代码,我的学习经验带来我的程 ...
- 如何接触学习java
信息科技必将是未来的潮流,Java语言必将在时代的进步中发挥不可估量的作用,未来,掌握好一门实用而且有良好应用前景的技术是你们的首要任务. 零基础怎么学Java 多年Java教育培训经验事实表明,零基 ...
- 零基础如何系统学习Java Web
零基础如何系统学习Java Web? 我来给你说一说 你要下决心,我要转行做开发,这样你才能学成. 你要会打字,我公司原来有一个程序员,打字都是两个手一指禅,身为程序员你一指禅怎么写出的代码,半个 ...
- (转)如何学习Java技术?谈Java学习之路
51CTO编者注:这篇文章已经是有数年“网龄”的老文,不过在今天看来仍然经典.如何学习Java?本篇文章可以说也是面对编程初学者的一篇指导文章,其中对于如何学习Java的步骤的介绍,很多也适用于开发领 ...
- 《疯狂Java讲义》(一) ---- 关于学习Java的反思
"听到Spring很火,就立马买来一本Spring的书来读,最后结果往往是失败,因为这种学习没有积累,没有根基,学习过程中困难重重,每天都被一些相同.类似的问题所困扰,起初热情十足,经常上论 ...
- 十天来学习java的心得体会
有关学习java是几天来的心得体会: 十天学习java遇到很多问题,每个问题都是经过反复的看书本以及上网查找资料来解决的,发现这一点真的需要自己来而不是去遇到什么问题就去依靠他人(师兄.同学).在其中 ...
- 【转】学习JAVA的步骤
好东西大家分享: JAVA学习的一些重点 . Java语言基础 谈到Java语言基础学习的书籍,大家肯定会推荐Bruce Eckel的<Thinking in Java>.它是一本写的 ...
- 应用JConsole学习Java GC
应用JConsole学习Java GC 关于Java GC的知识,好多地方都讲了很多,今天我用JConsole来学习一下Java GC的原理. GC原理 在我的上一篇中介绍了Java运行时数据区,在了 ...
随机推荐
- 关于MySQL无法启动的一点问题
今天早上做作业启动MySQL遇到服务无法启动的问题,在网上找方法解决找了一个钟. 修改host文件,重装mysql服务,就差卸载重装了.到后面终于找到问题,原来是我之前改了root密码,所以每次启动m ...
- Java实现 蓝桥杯 算法训练 未名湖边的烦恼
算法训练 未名湖边的烦恼 时间限制:1.0s 内存限制:256.0MB 问题描述 每年冬天,北大未名湖上都是滑冰的好地方.北大体育组准备了许多冰鞋,可是人太多了,每天下午收工后,常常一双冰鞋都不剩. ...
- Java实现 LeetCode 303 区域和检索 - 数组不可变
303. 区域和检索 - 数组不可变 给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点. 示例: 给定 nums = [-2, 0, 3, ...
- Java实现 蓝桥杯VIP 算法提高 P0404
计算一个无符号整数的阿尔法乘积.对于一个无符号整数x来说,它的阿尔法乘积是这样来计算的:如果x是一个个位数,那么它的阿尔法乘积就是它本身:否则的话,x的阿尔法乘积就等于它的各位非0的数字相乘所得到的那 ...
- Java实现 洛谷 P1280 尼克的任务
import java.util.Scanner; public class Main { public static class edg{ private int to; private int n ...
- zabbix 交换机端口显示端口描述
ZABBIX 监控系统流量图显示端口描述 进入web 选择配置--主机 选择触发器原型 编辑触发器 随便点开一个触发器 选择触发器原型 逐个点开修改 {#IFDESCR}: ({#IFALIA ...
- AsyncTask源码解读
AsyncTask源码解读 一.基本使用 protected void onPreExecute() protected abstract Result doInBackground(Params.. ...
- 移动UI系列 - 简单地使用半衰期算法来预测手势的滑动方向与速度
前言 有一个问题, 给定一个物体的运动轨迹, 包含时间和坐标的数组, 如何使用这个数据来预测物体未来的运动走势?? 本文提供了一个很简单的方式去实现这个算法. 效果够用, 又简单, 有一定的准确程度. ...
- AWS—Xshell工具远程登录EC2虚拟机
一.创建AWS账户(已有AWS账号的请跳过) 访问 https://amazonaws-china.com/cn/,点击创建AWS账户,根据提示填写个人相关信息,创建AWS账户. 二.创建EC2虚拟机 ...
- Cypress系列(22)- 可操作类型的命令 之 select()
如果想从头学起Cypress,可以看下面的系列文章哦 https://www.cnblogs.com/poloyy/category/1768839.html .select() 在 <sele ...