2017.06.06-日记-面向对象-this关键字及JAVA源文件结构

这是今天的笔记,只是一些理论,后面有几个练习一块贴上来了,

this:当前类的对象引用
使用场合(都是类的内部):
1.获取实例本身 public A getA(){return this}
2.获取类的成员变量 this.属性
3.获取类的成员方法 this.方法名()
4.获取类的构造方法 this()

JAVA中方法的传参都是值传递,就是将数据复制一份放入方法形参
基本数据类型:将实参的值复制一份传入形参
结果:对形参进行修改不会改变实参

引用数据类型:将引用类型的内存地址复制一份传入形参
结果:
1.对形参修改会引发形参地址所指向的那个内存数据变化而引发实参变化 (内存地址不变化)
2.如果在传入的方法内部对形参的地址进行修改,则形参的新地址指向的内存数据的变化和实参无关(内存地址变化)

JAVA源文件结构
1.包声明--package xx.xx.;
2.导入声明--import xx.xx.类名;
3.类声明--public class 类名{}
4.属性声明--private 数据类型(基本类型and引用类型) 属性名;
5.成员方法声明--修饰符 返回值类型(基本,引用) 方法名(形参列表(形参数据类型1 形参名称2,形参数据类型2 形参名称2)..){}
6.构造方法声明--修饰符 类名(形参列表){}

练习:

1.获取用户输入的随机两个整数,并计算它们之间有多少个能被5整除的数的和并打印输出.

解题思路:

  首先,获取用户输入两个数,

import java.util.Scanner;//导包

public class Demo1{

   public static void main(String[] args){

     //创建Scanner对象

     Scanner input = new Scanner(System.in);

     //提示输入

     System.out.println("请输入第一个整数:");

     int in1 = input.nextInt();//接收第一个数

     System.out.println("请输入第二个整数:");

     int in2 = input.nextInt();//接收第二个数

     int sum = 0; //声明一个变量sum用来存储总和

     //for循环

     //三元运算符, i=输入的最小值; i<=输入最大值; i++

     for(int i = in1 < in2 ? in1 : in2; i <= in1 > in2 ? in1 : in2; i++){

       if(i % 5 ==0){

         sum += i;//循环累加

       }

     }

     System.out.println(in1 + "到" + in2 + "之间能被5整除的数的和为:" + sum);

   }

}

2.桌子分别是什么价格?

一个家具店里有三种桌子,价格如下:

a.他们的价格各不相同.

b.它们的单价加起来共4000元.

c.第二种桌子比第一种桌子便宜400元.

d.第三种桌子的单价是第二种的2倍.

那么这三种桌子的单价分别是多少?

public class Demo03 {

  public static void main(String[] args) {

    //i为第一种桌子单价,j第二种,k第三种
    for (int i = 0; i <= 4000; i++) {
      int j = i - 400, k = j * 2;//j的价格比i便宜400,k的价格是j的2倍
      if (i + j + k == 4000) {//他们的总和是4000
        System.out.println("第一种桌子的单价是" + i + "元");
        System.out.println("第二种桌子的单价是" + j + "元");
        System.out.println("第三种桌子的单价是" + k + "元");
      }
    }
  }
}

此题解法有多种,也可以用三个for循环,比如下面的题:

3.我手里有1元,2元,5元的人民币共60张,总值是200元,并且1元面值的人民币比2元的人民币多4张,求三种面值人民币各有多少张?

解法:三个for循环:

public class Demo02 {
  public static void main(String[] args) {

    //i,j,k分别为1,2,5元面值的张数;
    for (int i = 0; i <= 200 / 1; i++) {
      for (int j = 0; j <= 200 / 2; j++) {
        for (int k = 0; k <= 200 / 5; k++) {

          //i比j多4张,    三者之和为60张,    总面值为200;
          if ((i - j == 4 && i + j + k == 60) && i + j * 2 + 5 * k == 200) {
            System.out.println("1元的有" + i + "张");
            System.out.println("2元的有" + j + "张");
            System.out.println("5元的有" + k + "张");
          }
        }
      }
    }
  }
}

还有两题是前两天讲的信息封装和隐藏,代码比较繁多,但难度不高,多写一下就明白了;

public class Game {//创建game类
  private String name;// 名字//成员变量name,并且私有化

  //下面是封装,就是 set意思是存值,可以理解为seve(保存)的首字母

  //       get意思是取值,可理解为get out(出去)的首字母,方便记忆

  public String getName() {
    return name;//取值将name返回
  }

  public void setName(String playName) {

    //存值,若要限制别人的输入,可在这里附加限制条件,这里是如果设置的名称(playName)的长度>=2并且<=8,那么就将设置的名字(playName)赋给name属性,就是可以正常输出,否则将执行else代码,将赋给一个默认值,这里设置默认值为提示"角色名为2~8位字符"这样当用户输入不合理的时候会进行提醒

    if (playName.length() >= 2 && playName.length() <= 8) {
      name = playName;
    } else {
      name = "角色名为2~8位字符";
    }
  }  

  public Game(){

    //记得类中添加一个无参构造方法,要不然使用的时候没有就尴尬了- -!

  }

}

好了今天差不多就这些了.努力吧各位!

时间: 2024-10-12 13:58:58

2017.06.06-日记-面向对象-this关键字及JAVA源文件结构的相关文章

2017年06月30号课堂笔记

2017年06月30号 星期五 多云 空气质量:中度污染 内容:MySQL第三节课 一.delete 和 truncate的区别 01.delete begin (开启事务)select * from grade;(查询年级表中所有的数据) delete from grade; (删除年级表中所有的数据)select * from grade;(查询年级表中所有的数据,没有数据) rollback; (事务回滚)select * from grade;(查询年级表中所有的数据,删除的数据恢复)

Java转换Json日期/Date(1487053489965+0800)/格式以及js时间格式 Tue Feb 14 2017 14:06:32 GMT+0800

/Date(1487053489965+0800)/用Java怎么转换成yyyy-MM-dd的格式 Tue Feb 14 2017 14:06:32 GMT+0800用Java怎么转换成yyyy-MM-dd的格式 跟普通的日期不太一样 public static void main(String[] args) { String str="/Date(1487053489965+0800)/"; str=str.replace("/Date(","&quo

2017年06月07号课堂笔记

2017年06月07号 晴 空气质量:中度污染->良 内容:jQuery第二节:基本选择器,层次选择器,属性选择器, 基本过滤选择器,可见性过滤选择器 备注:代课老师:李老师 一.基本选择器 1)老师代码: <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(

10 面向对象(package关键字的概述及作用)

10.01_面向对象(package关键字的概述及作用) A:为什么要有包 *开发时有很多类,如果放在一个文件夹中不方便管理,而且容易重复 将字节码(.class)进行分类存放 包其实就是文件夹 B:包的概述 举例: 学生:增加,删除,修改,查询 老师:增加,删除,修改,查询 - 方案1:按照功能分 com.heima.add AddStudent AddTeacher com.heima.delete DeleteStudent DeleteTeacher com.heima.update U

面向对象this关键字和概述和应用

面向对象this关键字和概述和应用 1 package thisdemo; 2 3 /** 4 * 面向对象this关键字和概述和应用 5 * 6 */ 7 8 //定义老师类 9 class Teacher { 10 private String name; 11 private int age; 12 13 //设置姓名值 14 public void setName(String n){ 15 name = n; 16 } 17 18 //获取姓名值 19 public String ge

JAVA面向对象-----super关键字

JAVA面向对象-–super关键字 1:定义Father(父类)类 1:成员变量int x=1; 2:构造方法无参的和有参的,有输出语句 2:定义Son类extends Father类 1:成员变量int y=1; 2:构造方法无参和有参的.有输出语句this.y=y+x; 3:创建Son类对象 Son son=new Son(3); System.out.println(son.y); //4 class Father { int x = 1; Father() { System.out.p

[转载]傅里叶分析之掐死教程(完整版)更新于2014.06.06 - 与时间无关的故事 - 知乎专栏

  傅里叶分析之掐死教程(完整版)更新于2014.06.06 Heinrich 作 者:韩 昊 知 乎:Heinrich 微 博:@花生油工人 知乎专栏:与时间无关的故事 谨以此文献给大连海事大学的吴楠老师,柳晓鸣老师,王新年老师以及张晶泊老师. 转载的同学请保留上面这句话,谢谢.如果还能保留文章来源就更感激不尽了. --更新于2014.6.6,想直接看更新的同学可以直接跳到第四章---- 我保证这篇文章和你以前看过的所有文章都不同,这是12年还在果壳的时候写的,但是当时没有来得及写完就出国了-

phoenix连接hbase数据库,创建二级索引报错:Error: org.apache.phoenix.exception.PhoenixIOException: Failed after attempts=36, exceptions: Tue Mar 06 10:32:02 CST 2018, null, java.net.SocketTimeoutException: callTimeou

环境描述: 操作系统版本:CentOS release 6.5 (Final) 内核版本:2.6.32-431.el6.x86_64 phoenix版本:phoenix-4.10.0 hbase版本:hbase-1.2.6 表SYNC_BUSINESS_INFO_BYDAY数据库量:990万+ 问题描述: 通过phoenix客户端连接hbase数据库,创建二级索引时,报下面的错误: 0: jdbc:phoenix:host-10-191-5-226> create index SYNC_BUSI

3.03_面向对象(static关键字及内存图)

* A:案例演示     * 通过一个案例引入static关键字.     * 人类:Person.每个人都有国籍,中国. * B:画图演示     * 带有static的内存图 lass Demo1_Static { public static void main(String[] args) { /*Person p1 = new Person();  //创建对象 p1.name = "苍老师";                   //调用姓名属性并赋值 p1.country