本站已关停,现有内容仅作科研等非赢利用途使用。特此声明。
查看: 1678|回复: 2
打印 上一主题 下一主题

第Ⅱ期Android菜鸟饭团#Java学习#第八课 活动笔记

[复制链接]
跳转到指定楼层
1#
发表于 2015-10-28 15:19:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 xiao_ming 于 2015-10-30 15:50 编辑

第Ⅱ期Android菜鸟饭团#Java学习#第八课 活动笔记


一.This  关键字:

  • 在类的方法定义中使用的this关键字代表使用该方法的对象的使用。
  • 当必须指出当前使用方法的对象是谁要使用this
  • 又是使用this可以处理方法中成员变量和参数重名的情况。
  • this可以看作是一个变量,它的值是当前对象的引用

【示例】
Public class leaf{
Int i=0;
Leaf (int i) { this.i=i;}
Leaf increament(){
I++;
Return this;
}
Void print (){System.out.println(“i=”+i);}
Public static void main (String[] args){
Leaf leaf =new Leaf(100);
Leaf.increament().increament().print();
}
}



二.Static 关键字:

  • 再类中,用static声明的成员变量为静态变量,它为该类的公用变量,在第一次使用时被初始化,对于该类的所有都想来说,static成员变量只有一份。
  • 用static声明的方法为静态法法,在调用该方法是,不会讲该对象的引用传递给它,所以在static法中不可访问非static成员。
  • 静态方法不再是针对于某个对象调用,所以不能访问非静态成员
  • 可以通过对象引用或类名(不需要实例化)访问静态成员。


三.Package 和 import语句:

  • 为便于便于管理大型软件系统中数目众多的类,解决类的命名冲突问题,java引入包(package)机制,提供类的多重类命名空间。
  • package语句作为java源文件的第一条语句,指明该文件中定义的类所在的包。

(若缺省该语句,则指定为无名包)。
他的格式:
7.package pkg1[.pkg2[pkg3...]];
  • java编译器把包对应于文件系统目录管理,package语句中,用’.’来指明包目录的层次,例如如何使用语句
  • package com.sxt;则该文件中所有的类位于.\com\sxt目录下
  • 如果将一个类打包,则使用该类时,必须使用该类的全名(例如:com.sxt.Myclass),java 编译器才会在找到该类。
  • 也可以使用import在文件的开头引入要使用到的类;例如:


Import  com.sxt.Myclass;
Import  java.util.*;//引入java.util包中所有的类
       ...  ...   ...
  Myclass myclass = new Myclass();//可以直接使用类名


  • 可以不需要import语句直接使用java.lang包中的类。
  • 如果想将一个雷放入包中,在这个类源文件第一句写package
  • 必须保证该类的class文件位于正确目录下(该类的源码可能会产生影响,删除或转移到另外的目录)
  • 另外的类想访问的话:写全名;引入;*;具体类名;访问位于同一个包中的类不需要引入
  • 必须class文件的最上层包的父目录位于classpath下


四.J2SDK中主要的包介绍:

  • java lang—包含一些Java语言的核心类,如String、Math、Integer、System和Thread,提供常用功能。
  • java awt—包含了构成敞口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。
  • java applet—包含applet运行所需的一些类。
  • java net—包含执行与网络相关的操作的类。
  • java io—包含能提供多种输入/输出功能的类。
  • java util—包含一些实用工具类,如定义系统特性、使用与日期日历相关的函数。


五.静态方法能否重载:

静态方法只能控制静态变量(他们本身没有),静态方法不能被重载和覆盖。

六.Static的作用域:

作用域只在他所在的那语句块内,也就是static后的面的这组大括号内

七.静态方法和非静态方法

● 生命周期(Lifecycle):
静态方法(Static Method)与静态成员变量一样,属于类本身,在类装载的时候被装载到内存(Memory),不自动进行销毁,会一直存在于内存中,直到JVM关闭。
非静态方法(Non-Static Method)又叫实例化方法,属于实例对象,实例化后才会分配内存,必须通过类的实例来引用。不会常驻内存,当实例对象被JVM 回收之后,也跟着消失。
● 在内存中存储位置
静态方法和静态变量创建后始终使用同一块内存,是连续的。
非静态方法会存在于内存的多个地方,是离散的。
● 效率
静态方法的使用效率比非静态方法的效率高。
● 线程安全
静态方法是共享代码段,静态变量是共享数据段。既然是“共享”就有并发(Concurrence)的问题。
非静态方法是针对确定的一个对象的,所以不会存在线程安全的问题。
● 使用范围
静态方法:⒈ 有静态属性的类,一般会定义静态方法。⒉ 没有属性的类,一般会定义静态方法。⒊ 如果一个方法与他所在类的实例对象无关,那么它就应该是静态的。静态方法可以被继承但是不能被覆盖。
●  总计
如果静态方法在系统中定义太多,会占用大量的资源,最后造成内存溢出,所以静态方法不能滥用。如果从线程安全、性能、兼容性上来看,选用实例化方法为宜。
八.静态变量和动态变量区别:
静态变量可以用方法直接调用。非静态变量只能有此类的对象调用。
内存中的各种区:
堆区:
1.存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令)
2.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身
栈区:
1.每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象),对象都存放在堆区中
2.每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。
3.栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令)。
方法区:
1.又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。
2.方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。
小问题:sid++是先赋值再加加;++sid是先加加再赋值


每一个技术小白都有一个成为大神的梦想,现在Android菜鸟饭团就给你这个成就梦想的机会。我们提供最新的Android技术教学,只要你又耐心和毅力就一定会在这里有所收获。
Android菜鸟饭团南阳GDG组织发起,秉承着开放、分享、创新的原则,希望通过GDG社区的力量能够给更多的想要学习Android开发技术的小白们创造一个学习,交流,分享的环境。同往常的GDG活动一样,我们依然是任性的一个子都不要,并且还在周六的分享中提供盒饭和不定期的惊喜小礼物呦~所以快来加入我们吧,为你的大神梦想迈出第一步。
把你的个人信息和申请理由快快发送到android@chuang1.net,前来加入我们吧

ChinaGDG.com
回复

使用道具 举报

2#
发表于 2015-10-29 13:42:30 | 只看该作者
java一个类可以有几个静态方法?
ChinaGDG.com
回复 支持 反对

使用道具 举报

3#
 楼主| 发表于 2015-10-30 14:37:09 | 只看该作者
蒋凯歌 发表于 2015-10-29 13:42
java一个类可以有几个静态方法?


一般来说应该是没有限制的,根据你自己实际的需要
ChinaGDG.com
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表