Java(基础)的类与变量
Java的类与成员变量
在我们学习编程语言中,需要灵活自用,那么怎么来灵活的将所有的函数属性来调用来实现完整的工程呢?
所以我们需要认识到类和变量的定义
1、类是什么?
类是抽象的概念,而对象就是类的具体存在体现。列如:我们的类就像生活中的小汽车,那么我们就可以将小汽车看作为一个类,我们称之为小汽车类,每一台小汽车都有轮胎数、颜色等(可以定义为属性,即成员变量),每一台车都可以跑(即车的行为,对应类总的成员函数),我们把小汽车实例一下,即产生一个对象,比如宝马(BMW)。
列:public class littlecar #定义的小汽车类
2、成员变量
先看一个事物:
属性:外观特征;列如人的身高、体重、(颜值。。。。。 :)
行为:能够做什么;列如:能跑、能跳、(能飞。。。。。我会飞! :)
而在Java语言中,最基本单位的就是类,而类就是用来体现事物的。
而class就是来描述事物:
属性:对应类的成员变量
行为:对应成员的函数
定义类其实就是在定义类的成员(成员变量和成员函数)
来看一下一个实例:
列1:
public class LittleCar {
private String color; // 定义汽车颜色,全局变量
private int numLuntai; // 定义汽车轮胎数,全局变量
public LittleCar(String color, int numLuntai){
super();
this.color =
color;
this.numLuntai =
numLuntai;
}
public void run() {
System.out.println(this.numLuntai+ "个轮子的" +this.color + "轿车在马路上行驶着");
}
}
public class ClassT {
public static void main(String[] args){
LittleCar BMW= new LittleCar("黑色", 4); // 创建一个轿车对象,名字为BMW
BMW.run();
}
}
运行结果:
4个轮子的黑色轿车在马路上行驶着
其中color和numLuntai就称为Car 类的成员变量,这个属性能够用来描述一个类的属性,否则,它就应该定义为局部变量。
3、局部变量
例如一个for循环中的i即是局部变量。
for(int i = 0; i < args.length; i++) {
......
}
列2:
publicclass LittleCar {
private String color; // 定义汽车颜色,全局变量
private int numLuntai; // 定义汽车轮胎数,全局变量
public LittleCar(String color, int numLuntai){
super();
this.color =
color;
this.numLuntai =
numLuntai;
}
public void run() {
String carName=”奔驰牌”; //这个就是局部变量
System.out.println(this.numLuntai+ "个轮子的" +this.color + carName+"轿车在马路上行驶 着");
}
}
publicclass ClassTest {
public static void main(String[] args){
LittleCar BMW= new
Car("黑色", 4); // 创建一个轿车对象,名字为BMW
BMW.run();
}
}
结果:
4个轮子的黑色奔驰牌轿车在马路上行驶着
4、成员变量和局部变量的区别
成员变量:
①成员变量定义在类中,在整个类中都可以被访问。
②成员变量随着对象的建立而建立,随着对象的消失而消失,存在于对象所在的堆内存中。
③成员变量有默认初始化值。
局部变量:
①局部变量只定义在局部范围内,如:函数内,语句内等,只在所属的区域有效。
②局部变量存在于栈内存中,作用的范围结束,变量空间会自动释放。
③局部变量没有默认初始化值
在使用变量时需要遵循的原则为:就近原则
首先在局部范围找,有就使用;接着在成员位置找。
5、静态变量
由static修饰的变量称为静态变量,其实质上就是一个全局变量。如果某个内容是被所有对象所共享,那么该内容就应该用静态修饰;没有被静态修饰的内容,其实是属于对象的特殊描述。
列3:
class Person{
//成员变量,实例变量
String name;
//静态变量,类变量
//所有对象共享的属性用static修饰
static String country = "CN";
public void show(){
System. out.println(country +
":" + name);
//等效语句:System.out.println(Person.country+ ":"
+ this.name);
}
}
class StaticDemo{
public static void main(String[]args){
Personp = new Person();
System. out.println(p.country);
//可以用类名直接调用
System. out.println(Person.country);
}
}
结果:
CN
CN
6、成员变量和静态变量的区别
1、两个变量的生命周期不同
成员变量随着对象的创建而存在,随着对象被回收而释放。
静态变量随着类的加载而存在,随着类的消失而消失。
2、调用方式不同
成员变量只能被对象调用。
静态变量可以被对象调用,还可以被类名调用。
3、别名不同
成员变量也称为实例变量。
静态变量也称为类变量。
4、数据存储位置不同
成员变量存储在堆内存的对象中,所以也叫对象的特有数据。
静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据。
7、成员变量、局部变量、静态变量列表对比:
成员变量、局部变量、静态变量的区别
|
成员变量 |
局部变量 |
静态变量 |
|
|
定义位置 |
在类中,方法外 |
方法中,或者方法的形式参数 |
在类中,方法外 |
|
初始化值 |
有默认初始化值 |
无,先定义,赋值后才能使用 |
有默认初始化值 |
|
调用方式 |
对象调用 |
--- |
对象调用,类名调用 |
|
存储位置 |
堆中 |
栈中 |
方法区 |
|
生命周期 |
与对象共存亡 |
与方法共存亡 |
与类共存亡 |
|
别名 |
实例变量 |
--- |
类变量 |
结束语:(我也是再前辈那里借鉴的!所以有些说的不是很好,请大家多多包涵!谢谢你们的预览。还有:)这个符号很好玩的哈()上边那里是开玩笑的啦!加油吧程序猿!!!!)
Java(基础)的类与变量的更多相关文章
- 第二十九节:Java基础知识-类,多态,Object,数组和字符串
前言 Java基础知识-类,多态,Object,数组和字符串,回顾,继承,类的多态性,多态,向上转型和向下转型,Object,数组,多维数组,字符串,字符串比较. 回顾 类的定义格式: [类的修饰符] ...
- java基础-System类常用方法介绍
java基础-System类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.System类概念 在API中system类介绍的比较简单,我们给出定义,system中 ...
- java基础-Integer类常用方法介绍
java基础-Integer类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在实际程序使用中,程序界面上用户输入的数据都是以字符串类型进行存储的.而程序开发中,我们需 ...
- Java基础-StringBuffer类与StringBuilder类简介
Java基础-StringBuffer类与StringBuilder类简介 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.StringBuffer类 在学习过String类之后 ...
- java基础-BigDecimal类常用方法介绍
java基础-BigDecimal类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.BigDecimal类概述 我们知道浮点数的计算结果是未知的.原因是计算机二进制 ...
- java基础-BigInteger类常用方法介绍
java基础-BigInteger类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.BigInteger类概述 Java中long型为最大整数类型,对于超过long ...
- java基础-Arrays类常用方法介绍
java基础-Arrays类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Array类的概念 此类包含用来操作数组(比如排序和搜索)的各种方法.需要注意,如果指定 ...
- java基础-Math类常用方法介绍
java基础-Math类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Math类概念 Math 类包含用于执行基本数学运算的方法,如初等指数.对数.平方根和三角函 ...
- Java基础-Calendar类常用方法介绍
Java基础-Calendar类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Calendar类概念 Calendar 类是一个抽象类,它为特定瞬间与一组诸如 Y ...
- Java基础-Date类常用方法介绍
Java基础-Date类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.毫秒值概念 我们在查阅Date类的API文档时,会发现这样的一句话:"The cl ...
随机推荐
- Quartz2D 之 简单介绍
1. 概述 Quartz2D 是一个二维绘图引擎. 主要功能: 绘制图形:线.矩形.圆.弧 绘制文字 绘制图片 绘制PDF 裁截图片 自定义UI控件 2. 图形上下文 Graphics Context ...
- JavaScript 模块化及 SeaJs 源码分析
网页的结构越来越复杂,简直可以看做一个简单APP,如果还像以前那样把所有的代码都放到一个文件里面会有一些问题: 全局变量互相影响 JavaScript文件变大,影响加载速度 结构混乱.很难维护 和后端 ...
- JDBC-ODBC桥连接方式操纵SQL数据库
/** * 功能:演示使用JDBC-ODBC桥连接方式操纵SQL数据库 * 作者:徐守威 * 操作步骤: * 1.配置数据源 * 2.在程序中连接数据源 * 3.操作数据 */ pack ...
- vmwvare 网卡设置讲解
- QT第二天学习
回顾: qmake: qmake -project //生成*.pro文件 qmake //makefile make 注:if(qmake -v >=5) then QT += widget ...
- Memcached Client的释疑
1.目前大多数php环境里使用的都是不带d的memcache版本,这个版本出的比较早,是一个原生版本,完全在php框架内开发的.与之对应的带d的memcached是建立在libmemcached的基础 ...
- Java中的集合类型的继承关系图
Java中的集合类型的继承关系图
- 自动化测试框架中关于selenium api的二次封装
不多说,直接看代码如下: #coding:utf-8 from selenium import webdriver from selenium.webdriver.common.action_chai ...
- BZOJ 1497: [NOI2006]最大获利(最大权闭合子图)
1497: [NOI2006]最大获利 Time Limit: 5 Sec Memory Limit: 64 MB Description 新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机 ...
- MongoDB基础之八 备份与恢复
Mongodb导出与导入 1: 导入/导出可以操作的是本地的mongodb服务器,也可以是远程的.所以,都有如下通用选项:-h host 主机--port port 端口-u username 用户名 ...