基本和引用数据类型
    存储方式
    数据类型总结

jvm运行时数据区域
        方法区
        虚拟机栈!
        本地方法栈
        堆!
        程序计数器

虚拟机栈
            其中存放了编译器可知的基本类型和对象引用,还有returnAddress
        堆
            jvm规范规定:所有的对象实例以及数组都在这里分配内存

基本数据类型没有方法,引用数据类型有方法

方法的传参方式
形参不影响实参  值类型
参数是基本数据类型:传值
形参影响实参     引用类型
参数是引用数据类型:传址
形参不影响实参  字符串类型
参数是String需要考虑其不可变性

package com.fgy.java8se;

class User{
int age=20;
} public class Demo7 { void m1(int i){
i++;
System.out.println(i);
}
void m2(User user){
user.age++;
System.out.println(user.age);
}
void m3(String ss){
ss+="abc";
System.out.println(ss);
}
public static void main(String[] args) { //形参不影响实参 值类型
//参数(形参与实参)是基本数据类型:传值(按值传递),拷贝一份
int j=0;
Demo7 demo=new Demo7();
demo.m1(j);
System.out.println(j); //形参影响实参 引用类型
//参数是引用数据类型:传址
System.out.println("-----------------");
User user=new User();
user.age=30;
demo.m2(user);
System.out.println(user.age); //形参不影响实参 字符串类型
//参数是String需要考虑其不可变性
System.out.println("-----------------");
String s="123";
demo.m3(s);
System.out.println(s);
} }

变量的作用域
    作用域的概念
    局部变量与成员变量
    
    作用域:scope 有时也叫visibility可见性,是指变量能够被访问的代码块
    
    局部变量
    局部变量是指定义在方法,构造方法或代码块中的变量,也包括方法的参数。其作用域较小
    特点:
        没有初始化的值
        赋值之前不能访问
        可以声明在方法体的任意地方,只要在使用之前就可以
        局部变量可以与成员变量同名
        
        先去找局部变量,再去找成员变量,就近原则
    成员变量
    成员变量是指声明在类中的属性,可以在类的任何位置访问到,可以认为是成员变量

package com.fgy.java8se;

public class Demo8 {

    int aa=50;
void m1(){
int num1=10;
//这里就可以访问成员变量aa
System.out.println(aa);
}
//局部变量,不能访问另一个方法的num1
void m2(){
//System.out.println(num1);
}
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
System.out.println(i);
}
//局部变量,不能访问for中的i
//System.out.println(i);
if (1==1) {
int num=10;
}
//局部变量,不能访问if中的num
//System.out.println(num);
}
}

static关键字
    static关键字概述及其使用场景
    static变量
    static方法
    static导入
    static代码块
    
    使用场景
        属性
        方法
        导入
        代码块
        内部类(后续课程介绍)
        
    static变量
        该变量属于类,一般称为类变量
        所有实例共享该变量的值
        使用类直接访问
        不可直接将非静态变量赋值给静态变量
    static方法
        也称为类方法(普通方法称为实例方法)
        一般是工具类中的方法
        使用类直接访问
        不能直接访问非静态变量或方法
    static导入
        用于导入类中的静态方法和静态属性    
        import static 包名.m1;
        然后直接调用,不用类名.m1来调用了        
    static代码块
        类的组成部分之一    类由属性,方法,代码块,静态代码块,内部类组成。
        实例化之前执行
        只会执行一次
        框架或设计模式时会用到,一般不用

package com.fgy.java8se;

public class Demo9 {

    //下面的成员变量(也叫属性)要通过它所归属的类实例化,打点引用访问
int num; static int num1;
//不可将非静态变量赋值给静态变量
//static int num2=num; void m(){
//static int num3=10;
} public static void main(String[] args) {
//下面实例化后,就可以调用了,每个实例化后的对象各不相干
Demo9 d1=new Demo9();
d1.num=10;
//用对象打点来调用没有问题
d1.num1=80; Demo9 d2=new Demo9();
d2.num=20;
//用对象打点来访问没有问题
d2.num1=60;
//但最好用类打点的方式来访问,因为它是一个静态成员变量
Demo9.num1=50;
System.out.println(d1.num+","+d2.num);
System.out.println(Demo9.num1+","+d1.num1+","+d2.num1);
}
}
package com.fgy.java8se;

//静态导入
//import static com.fgy.eclipse.Fish.swim;
import static com.fgy.eclipse.Fish.*; public class Demo10 { //代码块,这是实例化对象时最后执行的,执行多次
{
System.out.println("jjjj");
}
//静态代码块,这是实例化对象时最先执行的,只执行一次
static{
System.out.println("hello");
} static void m1(){
for (int i = 0; i < 5; i++) {
System.out.println(i);
}
}
public static void main(String[] args) {
//同一个类中,静态方法调用静态方法,直接调用
m1();
swim();
Demo10 d1=new Demo10();
Demo10 d2=new Demo10();
Demo10 d3=new Demo10();
}
}

构造方法的概念
构造方法的语法特征与特点
构造方法的使用
    
    构造方法是在创建对象后立即初始化对象的命名代码块

方法名与类名完全一致
    不能有返回值类型
    没有显式构造方法时,编译器会提供一个默认的无参构造方法,其访问控制修饰符与类一致
    一旦提供显式的构造方法时,就没有默认的构造方法
    构造方法由new或其它构造方法调用(this和super关键字时会讲到其它构造方法的调用)
    只有两个判断标准,有没有返回值类型,方法名与类名是不是相同
    
    使用构造方法初始化对象的属性值
    无参的构造方法通过new来实例化,调用赋值通过打点来实现
    有参的构造方法通过new来传递实参到方法中,方法中进行赋值

package com.fgy.java8se;

public class Demo11 {
//方法名与类名完全一致
//不能有返回值类型
//没有显式构造方法时,编译器会提供一个默认的无参构造方法,其访问控制修饰符与类一致
//一旦提供显式的构造方法时,就没有默认的构造方法
//下面的没有返回值类型void,方法名与类名一致Demo11,默认提供一个无参的
//构造方法,访问控制修饰符与类一致。是一个默认的无参构造方法
/* public Demo11(){ }
*/
public Demo11(int age,String name){
// age=age;
// name=name;
//上面的两个没什么意义,我们的本意是将形参赋给成员变量,所以这里就要用到this
this.age=age;
this.name=name;
}
int age;
String name; public static void main(String[] args) {
//构造方法由new或其它构造方法调用
//无参的构造方法与有参的构造方法,如果两种都提供,就叫做方法的重载
//通过有参的构造方法为对象赋初始值
Demo11 d1=new Demo11(40,"ni");
System.out.println(d1.age+" "+d1.name);
//下面是为无参的构造方法赋值
/* d1.age=20;
d1.name="aaa";*/
} }
package com.fgy.java8se;

public class Co {

    int x;
int y;
public Co(int x,int y){
this.x=x;
this.y=y;
}
public static void main(String[] args) {
Co c1=new Co(3, 5);
System.out.println(c1.x);
}
}

java_oop_方法2的更多相关文章

  1. java_oop_方法1

    方法 方法概念 封闭业务逻辑 提高代码复用定义类的方法    类的方法定义类的某种行为(或功能)    方法返回的数据类型    方法的名称 (方法的参数也叫形参)    {方法的主体}    方法的 ...

  2. javaSE27天复习总结

    JAVA学习总结    2 第一天    2 1:计算机概述(了解)    2 (1)计算机    2 (2)计算机硬件    2 (3)计算机软件    2 (4)软件开发(理解)    2 (5) ...

  3. mapreduce多文件输出的两方法

    mapreduce多文件输出的两方法   package duogemap;   import java.io.IOException;   import org.apache.hadoop.conf ...

  4. 【.net 深呼吸】细说CodeDom(6):方法参数

    本文老周就给大伙伴们介绍一下方法参数代码的生成. 在开始之前,先补充一下上一篇烂文的内容.在上一篇文章中,老周检讨了 MemberAttributes 枚举的用法,老周此前误以为该枚举不能进行按位操作 ...

  5. IE6、7下html标签间存在空白符,导致渲染后占用多余空白位置的原因及解决方法

    直接上图:原因:该div包含的内容是靠后台进行print操作,输出的.如果没有输出任何内容,浏览器会默认给该空白区域添加空白符.在IE6.7下,浏览器解析渲染时,会认为空白符也是占位置的,默认其具有字 ...

  6. 多线程爬坑之路-Thread和Runable源码解析之基本方法的运用实例

    前面的文章:多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类) 多线程爬坑之路-Thread和Runable源码解析 前面 ...

  7. [C#] C# 基础回顾 - 匿名方法

    C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...

  8. ArcGIS 10.0紧凑型切片读写方法

    首先介绍一下ArcGIS10.0的缓存机制: 切片方案 切片方案包括缓存的比例级别.切片尺寸和切片原点.这些属性定义缓存边界的存在位置,在某些客户端中叠加缓存时匹配这些属性十分重要.图像格式和抗锯齿等 ...

  9. [BOT] 一种android中实现“圆角矩形”的方法

    内容简介 文章介绍ImageView(方法也可以应用到其它View)圆角矩形(包括圆形)的一种实现方式,四个角可以分别指定为圆角.思路是利用"Xfermode + Path"来进行 ...

随机推荐

  1. 浅谈JS中的typeof和instanceof的区别

    JS中的typeof和instanceof常用来判断一个变量是否为空,或者是什么类型. typeof typeof运算符返回一个用来表示表达式的数据类型的字符串. typeof一般返回以下几个字符串: ...

  2. 714-Card Trick

    思维题,把n个卡片倒着放,然后每个卡片循环放到最底下i次,最后出来的结果就是要求的卡牌顺序 #include<stdio.h> #include<string.h> #incl ...

  3. 学习笔记69—金蝶财务软件安装教程(KIS12.3,win10)

    ****************************************************** 如有谬误,请联系指正.转载请注明出处. 联系方式: e-mail: heyi9069@gm ...

  4. chrome 调试功能使用说明

    单文件搜索 ctrl+f 全局搜索 ctrl+shift+f

  5. vue extend 的基本使用

    vue.extend 局部注册 的应用2 请注意,extend创建的是一个组件构造器,而不是一个具体的组件实例.所以他不能直接在new Vue中这样使用: new Vue({components: f ...

  6. Vue-Router + Vuex 实现单页面应用

    效果查看(一个食品安全网,大家也可以发布一些食品安全的见闻,尽举手之劳): 源代码:https://pan.baidu.com/s/1i43H3LV 如果想要服务器端代码可以在评论里说明一下 利用vu ...

  7. 覃超:Facebook的项目开发流程和工程师的绩效管理机制

    覃超:Facebook的项目开发流程和工程师的绩效管理机制 http://mp.weixin.qq.com/s?__biz=MjM5MDE0Mjc4MA==&mid=2650992350&am ...

  8. Python ORM框架之SQLAlchemy

    前言: Django的ORM虽然强大,但是毕竟局限在Django,而SQLAlchemy是Python中的ORM框架: SQLAlchemy的作用是:类/对象--->SQL语句--->通过 ...

  9. Python-接口自动化(一)

    python基础知识(一) 一.python语言特点 1.易于学习:python有相对较少的关键字,结构简单,有一个明确定义的语法,学起来比较简单: 2.易于阅读:python代码定义的更清晰: 3. ...

  10. icon moon追加字体

    一.初始自定义字体为icon moon1@font-face { font-family: 'icomoon1'; src: url('fonts/icomoon1.eot?9fhn24'); src ...