1.java类class的定义

所有java程序都以类class为组织单元,java类由属性和方法组成,下面看例子:

public  class  Phone{

//属性

String company;

float  cpu;

//方法

void  call() {

System.out.println("这是一部手机!");

}

}

2.java对象的创建以及使用

上面我们已经创建了一个类Phone,所谓对象就是对这个人为构造的类进行实例化。

创建:

Phone  iphone  =  new Phone();       这个iphone就是对Phone这个类的实例化,它就是一个对象,继承了Phone类的所有属性以及方法。

使用:

iphone.company="苹果公司";          这里是对对象iphone的company进行赋值操作

iphone.call();                                    这里是调用对象iphone的call方法

3.java类中的变量类型

成员变量:通俗来讲就是指class下定义的属性和方法;

局部变量:通俗来讲就是指class下的方法中所含的变量;

那么是不是这两种变量是不是可以随意访问呢,这就涉及到一个作用域的问题。

我们把成员变量当做父亲,局部变量是方法(父亲)下的变量,即为儿子;

那么父亲出生时必然是看不到儿子的,所以在父亲所在的环境里不能够访问儿子(局部变量);

同理,儿子出生时必然可以看见父亲,所以在儿子所在的环境里是绝对能够访问父亲(成员变量),

即在class下方法内部是可以访问class下定义的成员变量。

4.构造方法

所谓构造方法,是指定义在java类中初始化对象的方法,实例化对象的时候自动执行这个构造方法。

特点是:与类同名、没有返回值;

e.g:  public class Todo{

String str;

public Todo(){

this.str="桔子桑";

System.out.println(str);

}

}

调用时,直接Todo eco =  new Todo();自动输出上面的字符串。

构造函数采用this语句实现了对成员变量的初始化。

有参的构造方法就不赘述了,要在参数前面指定参数类型。

如果没有定义构造方法,系统会自动生成一个空的无参构造方法。

5.static修饰符和final修饰符

static修饰符在java类中很常见,就是静态修饰符,例如:

static String name = "桔子桑";

public static void main(String[] args) { 方法体};

static修饰的类的成员(属性或者方法)是供类的所有实例化对象公用的;

就像现在有一块黑板,大家都可以在上面画画写字,A画了一幅画之后,B再拿到这块黑板时,

这块黑板上就会有A的画,如果B再对其修改,传到C手里,C看到的就是B修改后的样子。

static的作用就在于此,它所修饰的类的成员可以看作是动态变化的。

final修饰符通常定义常量,一旦定义之后此常量不可改变;

final double PI = 3.14;

这样定义之后,程序里面的PI就都等于3.14,要想在别处对其进行赋值改变它的值也是无效的。

6.静态属性与静态方法之间的访问问题

静态方法中只能直接访问同类中的静态成员(属性和方法);

静态方法中间接访问非静态成员可以通过先在静态方法中实例化一个类的对象,然后通过这个对象来访问非静态成员;

非静态方法中可以直接访问类中的任意成员,无论静态与否。

7.初始化块(静态与非静态)

前面我们已经提过,类可以通过构造方法进行对象的初始化操作,下面还有一种新的初始化方法---初始化块。

写法:假设已经定义了成员变量String name;static int age;在初始化时对其赋值,

{    name = "桔子桑" ;      }

static {      age = 99;        }

 注意:静态初始化块只能给静态变量赋值,并且程序会优先运行静态初始化块。

8.封装

我们可以看到一点,在前面所有的例子中,类里面定义的属性写法大多像这样:String name;

其实这样写,用户可以在本类、同包中通过class名.name访问这个属性(访问修饰符在后面会讲到);

我们通常的做法是在定义变量的时候声明其为私有的:private String name,这样只能在本类中访问这个属性;

那么要怎么才能访问或者修改呢?这里就会通过封装一个方法来做这些事;

按照编程规范,通常定义两个方法:setter和getter;

修改名字:public void setName(String newname){ name = newname; }

获取名字:public String getName() {   return name;}

9.包(package)

你可能已经注意到,一个项目下来会有很多的.java文件,那么这些文件之间是怎么关联的呢?其实在这里就用到了包管理

在同一个包下的两个java文件要实现关联可以直接使用package 包名.类名,或者就干脆用package 包名;

那么,不在一个包下的两个java文件要实现关联就得用到import字段了:import 项目名.包名.类名,

这就像是在电脑上找一个文件一样,D:\web\demo\demo.html

10.访问修饰符

访问修饰符                    本类                    同包                   子类                  其他

private                             √

默认                                √                          √

pretected                        √                          √                         √

public                              √                          √                         √                       √

java类定义、变量类型、构造函数的更多相关文章

  1. 开涛spring3(12.4) - 零配置 之 12.4 基于Java类定义Bean配置元数据

    12.4  基于Java类定义Bean配置元数据 12.4.1  概述 基于Java类定义Bean配置元数据,其实就是通过Java类定义Spring配置元数据,且直接消除XML配置文件. 基于Java ...

  2. Java进阶(四十)Java类、变量、方法修饰符讲解

    Java进阶(四十)Java类.变量.方法修饰符讲解 Java类修饰符 abstract: 将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现. final: 将一个类生命为最终(即非继承类) ...

  3. java类成员变量与代码块初始化

    首先根据下面的这个一段代码:引入关于java初始化顺序的问题public class InitationTest extends Person { public InitationTest() { S ...

  4. java基础(四) -变量类型

    在Java语言中,所有的变量在使用前必须声明.声明变量的基本格式如下: type identifier [ = value][, identifier [= value] ...] ; 格式说明:ty ...

  5. java类的初始化和构造函数

    本人小白一枚,看java类的初始化的时候好晕的说,我觉着书上尽管说的对.但总认为有些信息没说出来,没说清楚,看了好多文章博客的,如今有些感悟,来小写下总结,也算是为以后再次复习种个好果子. 先摘一下书 ...

  6. JAVA类,变量的赋值一个小细节,以及static标注变量的意义

    在JAVA类中方法外部定义的变量,如果定义的时候没有赋值,那么在方法外也不能对其进行赋值,否则报错,只能放入某一个方法内对其赋值.(为何报错待晚些时候深入查找补充) static标注的变量称为静态变量 ...

  7. Qt迭代器(Java类型和STL类型)详解

    迭代器为访问容器类里的数据项提供了统一的方法,Qt 有两种迭代器类:Java 类型的迭代器和 STL 类型的迭代器. 两者比较,Java 类型的迭代器更易于使用,且提供一些高级功能,而 STL 类型的 ...

  8. 【转】Java类成员变量默认初始化规则

    一个变量作为类成员使用的时候,如果没有被初始化,java会为其分配默认值: -------------------------------------------------------------- ...

  9. Java类的变量初始化顺序

    大家在去参加面试的时候,经常会遇到这样的考题:给你两个类的代码,它们之间是继承的关系,每个类里只有构造器方法和一些变量,构造器里可能还有一段代码对变量值进行了某种运算,另外还有一些将变量值输出到控制台 ...

随机推荐

  1. 【一天一道LeetCode】#96. Unique Binary Search Trees

    一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given n ...

  2. ROS_Kinetic_12 ROS程序基础Eclipse_C++(三)usb camera

    ROS_Kinetic_12 ROS程序基础Eclipse_C++(三)usb camera 软件包下载地址:https://github.com/bosch-ros-pkg/usb_cam 下载后, ...

  3. oracle ebs应用产品安全性-定义访问权限集

    定义 定义访问权限集是一项分配至责任层的可选的安全功能,是对Oracle 11i应用产品弹性域安全性定义的功能扩展,对总帐管理模块的一些内容进行安全性定义和权限分配的集合,以控制不同的责任对一些内容的 ...

  4. 分布式进阶(十三)Docker Container间实现数据共享

    sudo docker run -it -v /usr/lib:/usr/lib/dbdata --name dbcontainer-192.168.1.184 ubuntu:14.04 sudo d ...

  5. java对象大小

    Java对象的内存布局:对象头(Header),实例数据(Instance Data)和对齐填充(Padding) 对象头在32位系统上占用8B,64位系统上占16B. 无论是32位系统还是64位系统 ...

  6. 《java入门第一季》之Integer类和自动拆装箱概述

    / * int 仅仅是一个基本类型.int有对应的类类型,那就是Integer.  * 为了对基本数据类型进行更多的操作,更方便的操作,Java就针对每一种基本数据类型提供了对应的类类型--包装类类型 ...

  7. .bash_profile和.bashrc的什么区别及启动过程

    /etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置./etc/bashrc:为每一个运 ...

  8. 循环链表设计与API实现

    基本概念 循环链表的定义:将单链表中最后一个数据元素的next指针指向第一个元素 循环链表拥有单链表的所有操作 创建链表 销毁链表 获取链表长度 清空链表 获取第pos个元素操作 插入元素到位置pos ...

  9. StarUML添加自定义approach和profile

    来源:fasiondog 添加Approch StarUML中的Approch也就是创建项目时的模板,其中预定义了所使用方法的模型和视图.StarUML默认Approach如下: StarUML的Ap ...

  10. ITU-R BT.1788建议书 对多媒体应用中视频质量的主观评估方法

    ITU-R BT.1788建议书 对多媒体应用中视频质量的主观评估方法 (ITU‑R 102/6号研究课题) (2007年) 范围 数字广播系统允许提供多媒体和数据广播应用,包括视频.音频.静态图像. ...