package _yzq_1;
public class _yzq_SH {
//灯开关:
public static void main01(String[]args) {
//有一排开关,第一个人把所有的开关打开,第二个人按2的倍数的开关,
//第三个人按3的倍数的开关
//一次类推,现在有n个开关,k个人人,写函数最后灯亮着的开关
//开关的个数 n 人的个数k
//每一个人去遍历每一个开关
//关系:第几个人(第K个人可以按下k的倍数的开关 n%k==0 满足这个条件 按下开关
//第一个人 k=1 n=1,2,3,4,5,6…n
//第二个人 k=2 n=2,4,6,8…
func(100,2);//2个开关 3个人
}
public static void func(int n,int k) {
//方法都是小驼峰
boolean[]bs=new boolean[1000];//从零开始n个灯 bs[n-1]数组最大访问是n-1
//没有要第0个开关
for(int i=1;i<=k;i++) {
//k个人
for(int j=1;j<=n;j++) {
//n个开关
if(j%i==0) {
n求余但是不能用 用变量
//按开关 怎么表示按开关 取反的逻辑
bs[j]=! bs[j];
}
}
}
for(int i=1;i<=n;i++) {
//开关的数量
if(bs[i]) {
System.out.println(i);//亮着的灯
}
}
}
//总结1.程序的运行 编译 解释
/**
* 2.java的运行环境 jdk jre jvm
* 3.常量 数据类型 标识符 关键字 运算符
* 4.条件语句 if和switch 一个case跟一个break
* 5.循环语句 for while do-while循环
* 6.跳出 break return continue
* 7.方法 方法的定义和调用(三要素:方法 参数 返回值) 方法重载 递归(栈溢出)
* 8.数组 返回值 参数 冒泡排序 数组内存(局部变量)
*局部变量
* int a=1;
* int b=a;
* b=100; ===> a=1;
* int []arr=new int[]{1};数组的声明+初始化+赋值
* int []arr1=arr;
* arr1[0]=100;
* arr[0]=100;
* 1.栈和堆
* 栈:小块存储区域 存取快 栈中数据大小和生命周期必须是确定的(编译期间),缺乏灵活性
* 堆:大 存取慢 动态的申请内存
* 前提局部变量
* 2.存取位置:
* 基本数据类型:在栈上直接存储值
* 引用类型:在栈上存储(内存地址),而在堆上存储数据
* 3.程序的运行和数据存储分别是在哪里完成的?
* 程序的运行实在栈中(一个方法对应一个栈帧,数据的保存是在堆中
* 4.栈和堆的特点:
* 栈:资源申请 压栈和出栈 先进后出 资源释放:程序运行完成,自动释放栈
* 堆:资源申请 有内存就可以申请 无顺序的 释放:当栈中没有引种指向堆中那块内存的时候释放
* 这块内存变成了垃圾,jvm中有垃圾回收机制
*
*
*
*/
}
package _yzq_1;
public class _yzq_ld {
public static void main(String[]args) {
//堆和对象 java面向对象的语言
//ooP面向对象编程
//精髓OOA和OOD(面向对象分析与设计)
//一开始的语言是面向过程的
//案例:图灵机 c语言 面向过程 (数据结构+算法) 关心解决问题如的步骤
//面向过程:对象+交互(关心谁在解决问题)
//类:一个抽象的概念 就是生活中的类别,即归属于某个类别的个体
//现有类?还是现有对象呢?
//从编码的角度来说:先有类 再有对象
//2.从设计的角度来说:现有对象 再有类
//类:class () 脚本 抽象概念 ,类别 对象:new 实例化的内存 具体的实例,个体
//对象与对象之间 数据不同
//类和类之间 行为的不同
}
}
package cn.hberj.Demo;
/**
- 定义一个类,用来模拟学生 两个部分:
- 属性
- 姓名 String name;
- 年龄 int age;
- 成绩 float score;
- 行为
- 吃
- public void eat(){
- }
- sleep
- playGame(String Gamename)
- @author lenovo
*/
//修饰符 public 关键字 class 类名 大驼峰
public class Student {
//成员变量 类内方法外
String name;//姓名
int age;//年龄
float score;//成绩
//成员方法:
public void eat() {
System.out.println(“吃鲍鱼龙虾”);
}
public void sleep() {
System.out.println(“睡一个回笼觉”);
}
public void playGame(String name) {
System.out.println(“玩”+name );
}
//注意事项 成员变量:类内方法外
//2.成员方法 默认是不加Static
//
}
package cn.hberj.Demo;
//创建这个类的目的 创建对象
/**
- 使用类(为了创建对象)类不能直接使用,根据类创建对象才能使用
- 怎么创建对象呢?(使用 类的步骤)
*1.导入包 如果使用和本类同一个包下的类 不需要导包 可以省略
*如果使用和本类不在同一个包下的类,导报 在什么位置
*2.创建
*类名 对象名=new 类名();
*Student stu=new Student();
*3.使用 - 使用成员变量 对象名.成员变量
- 成员方法 对象名.成员方法
- @author lenovo
*/
//测试使用类
public class StudentText {
public static void main(String[]args) {
//1.导包
//2.创建
Student stu=new Student();
//stu对象 引用
//使用
System.out.println(stu.name);
System.out.println(stu.age);
System.out.println(stu.score);
//在为给学生的属性赋值之前是有默认值的
//null
//0
//0.0
stu.name=“万茜”;
stu.age=18;
stu.score=100;
System.out.println(stu.name);
System.out.println(stu.age);
System.out.println(stu.score);
//访问成员方法
stu.eat();
stu.sleep();
stu.playGame(“王者荣耀”);
}
}