【Java自学】搬砖中年人代码自学之路Lesson 6

编写程序,声明一个method方法,在方法中打印一个10*8 的*型矩形 1.编写程序,声明一个method方法,在方法中打印一个10*8 的*型矩形, * 在main方法中调用该方法。 * * 2.修改上一个程序,在method方法中,除打印一个10*8的*型矩形外,再 * 计算该矩形的面积,并将其作为方法返回值。在main方法中调用该方法,接收返回的面积值并打印。 * * 3.修改上一个程序,在method方法提供m和n两个参数,方法中打印一个m*n的*型矩形, * 并计算该矩形的面积, 将其作为方法返回值。在main方法中调用该方法,接收返回的面积值并打. 阅读详情

话说每次发了文章之后总有个几十到几百的阅读量,但是多多少少还是希望跟我一样的萌新们能够给个大拇哥支持支持,希望大佬们能够降维打击一下说一句md好弱鸡哈哈哈哈哈哈哈哈哈哈哈哈。其实主要原因是因为自己跟着视频课程学,尤其是一些作业题,也不知道做的对不对,其实还是比较希望能有个人来交流的。手下有个小孩儿是学计算机的,但是中年基层小领导的可笑面子让我不能接受我自己问他问题,所以干脆就跑上来,一方面记录一下自己的学习过程,一方面借着互联网来当个不露脸的键盘侠,即使被大家评头论足,其实也不会觉得尴尬不好意思

其实近来的学习一直是断断续续的,之前在知乎上看到一篇文章,说Java学习最好是不要间断,一旦间断就会出现知识断层,但是感觉目前阶段好像还好,断了一段时间,重新接上其实也能勉强跟的上,估计到后面难起来了之后就要连着学习了。而且最近其实比较纠结,因为前段时间隔离,吃睡都比较稳定,所以体重增长也比较稳定,已经成功突破180大关,最近正想着隔一天抽出一点时间去游个泳减个肥,所以感觉可能确实会继续保持这种断断续续的状态。

不过还有一件事儿比较纠结,可能最近该准备换工作的事儿了,又有点想认认真真的学完之后,看看Java能不能在我找工作的空窗期让我能够用它赚点小钱保证我的烟钱不断,其实想想还是有点小兴奋的。

走一步看一步吧!


⚠️面向对象⚠️    “大处着眼,小处着手”

⚠️面向对象⚠️  

一、Java面向对象学习的三条主线

        1. Java类及类的成员:属性、方法、构造器;代码块、内部类

        2. 面向对象的三大特征:封装性、继承性、多态性

        3. 其他关键字:this、super、static、final、abstract、interface、package、import等 

面向过程(POP:Procedure Oriented Programming)与面向对象(OOP:Object Oriented Programming)

        > 二者都是一种思想,面向对象是相对于面向过程而言的

                > 面向过程:强调的是功能行为,以函数为最小单位,考虑怎么做

                > 面向对象:将功能封装进对象,强调具备了功能的对象,以类/对象作为最小单位,考虑谁来做

                > 面向对象更强调运用人类在日常的思维逻辑中采用的思想方法与原则,如:抽象、分类、继承、聚合、多态等

        > 面向对象的三大特征

                > 封装(encapsulation)

                > 继承(inheritance)

                > 多态(polymorphism)

二、“把大象装进冰箱”:看似面向过程比面向对象要简洁,但是在实际编写代码,尤其是大项目的程序编写上,还是面向对象功能更加强大、结构更加清晰、过程更加简洁

        举例解读:有点像创业,小公司的时候更加像面向过程,人少,扁平;

                            但是公司一旦大了,如果不划分部门、职责,工作就会变得非常混乱

        1. 面向过程:强调的是功能行为,以函数为最小单位,考虑怎么做

                > 把冰箱门打开

                > 抬起大象,塞进冰箱

                > 把冰箱门关闭

        2. 面向对象:将功能封装进对象,强调具备了功能的对象,以类/对象作为最小单位,考虑谁来做

人{
    打开(冰箱){
        冰箱.打开();
    }

    抬起(大象){
        大象.进入(冰箱);
    }

    关闭(冰箱){
        冰箱.闭合();
    }
}

冰箱{
    打开(){

    }

    闭合(){

    }
}

大象{
    进入(冰箱){

    }
}

        3. 面向对象的三大特征

                > 封装(encapsulation)

                > 继承(inheritance)

                > 多态(polymorphism)

        4. 面向对象的思想概述

                > 程序员从面向过程的执行者转化成了面向对象的指挥者

                > 面向对象分析方法、分析问题的思路和步骤

                        > 根据问题需要,选择问题所针对的现实世界中的实体

                        > 从实体中寻找解决问题相关的属性和功能,这些属性和功能就形成了概念世界中的类

                        > 把抽象的实体用计算机语言进行描述,形成计算机世界中类的定义。即借助某种程序语言,把类构造成计算机能够识别和处理的数据结构

                        > 将类实例化成计算机世界中的对象。对象是计算机世界中解决问题的最终工具

三、Java语言的基本元素:类和对象

        1. 类(class)和对象(object)是面向对象的核心概念

                > 类:是对一类事物的描述,是抽象的、概念上的定义

                > 对象:是实际存在的该类事物的每个个体,因而也称为实例(instance)

                > 举例说明:「人」

                        > 类:抽象概念的人

                        > 对象:实实在在的某个人

                > 面向对象程序设计的重点是类的设计,具体的个体具备什么样的功能都是由类决定的,比如「你我他」需要睡觉,是因为「人」这个类的设计过程中就设置了需要睡觉的概念

                > 「类」的设计,其实就是类的成员的设计

        2. “万事万物皆对象”

        3. Java类及类的成员

                > 现实世界的生物体,大到鲸鱼,小到蚂蚁,都是由最基本的细胞构成的。同理,Java代码世界是由诸多个不同功能的类构成的

                > 现实生物世界中的细胞又是有什么构成的呢?细胞核、细胞质、...。那么,Java中用类class来描述事物也是如此,常见的类的成员有:

                        > 属性:对应类中的成员变量

                        > 行为:对应类中的成员方法

                                field = 属性 = 成员变量 = 域、字段(这种叫法相对较少,多数来自于外文书籍)

                                method = (成员)方法 = 函数

                > 创建类的对象 = 类的实例化 = 实例化类

//测试类
public class PersonTest{
    public static void main(String[] args){
        //创建Person类的对象
        Person p1 = new Person();//类似于Scanner scanner = new Scanner(System.in);

        //调用对象的属性:「对象.属性」
        p1.name = "Tom";
        p1.isMale = true;
        p1.age = 31;
        System.out.println(p1.name);

        //调用方法:「对象.方法」
        p1.eat();
        p1.sleep();
        p1.talk("Chinese");

        Person p2 = new Person();
        System.out.println(p2.name);//Tom?    报错?    输出的是null

        Person p3 = p1;//相当于是把p1变量保存的对象地址值赋值给p3,导致p1和p3指向了堆空间中同一个对象实体
        System.out.println(p3.name);//Tom

        p3.age = 10;
        System.out.println(p1.age);//10
    }
}

//创建类:设计类的成员
class Person{
    //属性
    String name;
    int age;
    boolean isMale;

    //方法
    public void ear(){
        System.out.println("人可以吃饭");
    }
    
    public void sleep(){
        System.out.println("人可以睡觉");
    }

    public void talk(String language){
        System.out.println("人可以说话,使用的语言是:" + language);
    }
}

四、类和对象的使用(面向对象思想落地的实现)

        1. 创建类:设计类的成员

        2. 创建类的对象:

        3. 通过"对象.属性"、"对象.方法"调用对象的结构

        4. 如果创建了一个类的多个对象,则每个对象都独立的拥有一套类的属性(非static的),意味着,如果我们修改一个对象的属性A,则不影响另外一个对象属性A的值

五、对象的内存解析

编译完源程序之后,生成一个或多个字节码文件

我们使用JVM中的类的家在期和解释器对生成的字节码文件进行解释运行。意味着,需要将字节码文件对应的类加载到内存中,涉及到内存解析

《JVM规范》

        1. 堆(Heap):此内存区域的唯一目的就是存放对象实例,几乎所有实例都是在这里分配内存。这一点在Java虚拟机规范中的描述是:所有的对象实例以及数组都要在堆上分配

        2. 栈(Stack):通常所说的栈,是指虚拟机栈,而非本地方法栈。虚拟机栈用于存储局部变量等

            局部变量表存放了编译器可知长度的各种基本数据类型(boolean、byte、char、short、int、float、long、double)、对象引用(reference类型),它不等同于对象本身,是对象在堆内存放的首地址。方法执行完,自动释放

        3. 方法区(Method Area):用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据

六、类中属性的使用

        属性(成员变量) vs 局部变量

        1. 相同点:

                > 定义变量的格式是一样的:数据类型 变量名 = 变量值;

                > 先声明,后使用

                > 变量都有其对应的作用域,超过作用域范围内就失效了

        2. 不同点:

                > 通过在类中声明的位置的不同做区分

                        > 属性:直接定义在类的一对{}内

                        > 局部变量:声明在方法内、方法形参、代码块内、构造器形参、构造器内部的变量

                > 关于权限修饰符的不同

                        > 属性:可以在声明属性时,指明其权限,使用权限修饰符

                           常用的权限修饰符:缺省(即属性前没有东西)、private、public、protected

                           权限修饰符作用:体现了结构被调用时候的可见性的大小 — — 封装性时候主要讨论

                           目前,大家声明属性时,都使用缺省就可以了

                        > 局部变量:不可以使用权限修饰符的,也可以理解为被方法的权限修饰符代替了

                > 关于默认初始化值的情况

                        > 属性:类的属性,根据其类型,都有默认初始化值

                                > 整型(byte、short、int、long) --> 0

                                > 浮点型(float、double) --> 0.0

                                > 字符型(char) --> 0 (或'\u0000')

                                > 布尔型(boolean) --> false

                                > 引用数据类型(类、数组、接口等) --> null

                        > 局部变量:没有默认初始化值。意味着,我们在调用局部变量之前,一定要显示赋值

                                > 特别的:形参在调用时,我们赋值即可

                > 在内存中加载的位置

                        > 属性(非static):加载到堆空间中

                        > 局部变量:加载到栈空间中

七、类中方法的声明和使用

//测试类
public class UserTest {
	public static void main(String[] args) {
		User u1 = new User();
		System.out.println(u1.name);
		System.out.println(u1.age);
		System.out.println(u1.isMale);
		
		u1.talk("日语");
	}
}

//设计类
class User {
	// 属性(成员变量)
	String name;
	int age;
	boolean isMale;

	public void talk(String language) {// <--这个language叫做形参,是局部变量
		System.out.println("我们使用:" + language + "进行交流");
	}

	public void eat() {
		String food = "烙饼";// <--局部变量
		System.out.println("中国人喜欢吃:" + food);
	}
}

        > 方法:描述类应该具有的功能。

           比如:Math类,squrt()、random()...

                      Scanner类,nextXxx()。。。

                      Arrays类,sort()、binarySearch()、toString()、equals()...

                > 举例:

                        public void eat() {}

                        public void sleep(int hour) {}

                        public String getName() {}

                        public String getNation(String nation) {}

 

                > 无形参:

                        > 无返回值:void(){}

                        > 有返回值:返回值的类型 方法名(){}

                > 有形参:

                        > 无返回值:void 方法名(形参列表){}

                        > 有返回值:返回值的类型 方法名(形参列表){}

                > 方法的声明格式:

                   权限修饰符 返回值类型 方法名(形参列表「可有可无,有形参的时候可以不止一个,例如binarysearch」){

                           方法体

                   }

                   注意:static、final、abstract来修饰的方法,后面再讲

                > 说明:

/*
 * 练习1:
 * 创建一个Person类,其定义如下:
 * 
 * Person
 * name:String
 * age:int
 * sex:int
 * ----------------
 * +study():void
 * +showAge():void
 * +addAge(int i):int
 * 
 * 要求:
 * 	1)创建Person类的对象,设置该对象的name、age和sex属性
 * 	   调用study方法,输出字符串"studying"
 * 	   调用showAge()方法显示age值
 * 	   调用addAge()方法,给对象的age属性值加2岁
 * 	2)创建第二个对象,执行上述操作,体会同一个类的不同对象之间的关系
 */

public class Person{
    String name;
    int age;
    /**
    *sex:1表明是男性
    *sex:2表明是女性
    */
    int sex;

    public void study(){
        System.out.println("Studying");
    }

    public void showAge(){
        System.out.println("age = " + age);
    }

    public int addAge(int a){
        age += a;
        return age;
    }
}
public class PersonTest{
    public static void main(String[] args){
        Person p1 = new Person();
        p1.name = "Tom";
        p1.age = 18;
        p1.sex = 1;

        p1.study();
        p1.showAge();

        int newAge = p1.addAge(2);
        System.out.println(p1.name + "新的年龄为:" + newAge);

        System.out.println(p1.age);//20,p1的age其实已经在addAge方法中的返回值赋值为20了,newAge相当于是被赋值过的age再赋值了一次,所以返回值是20

        Person p2 = new Person();
        p2.showAge();//0
        p2.addAge(10);
        p2.showAge();//10

        p1.showAge();//20
    }
}

 

                        > 关于权限修饰符:默认方法的权限修饰符先都使用public

                           Java规定的4种权限修饰符:private、public、缺省、protected --> 封装性再细说

                        > 返回值类型:有返回值 vs 没有返回值

                                > 如果方法有返回值,则必须在方法声明时,指定返回值的类型。同时,方法中需要使用return关键字,格式「return 数据;」来返回指定类型的变量或常量,否则程序会报错

                                   如果方法没有返回值,则方法声明时,使用void来表示。通常没有返回值的方法中,不需要使用return关键字,但是,如果使用的话,只能用格式「return;」表示结束此方法

                                > 如何确定定义方法时该不该有返回值?

                                        > 看题目要求

                                        > 凭经验,具体问题具体分析

                        > 方法名:属于标识符,遵循标识符的规则和规范,「见名知意」

                        > 形参列表:方法可以声明0个、1个或多个形参

                                > 格式:数据类型1 形参1,数据类型2 形参2,.....

                                > 如何确定定义方法时该不该定义形参?

                                        > 看题目要求

                                        > 凭经验,具体问题具体分析

                        > 方法体:方法功能的体现

                > return关键字的使用

                        > 使用范围:使用在方法体中

                        > 作用:

                                > 结束一个方法,类似于break;

                                > 针对于有返回值类型的方法,使用格式「return 数据;」方式返回所要的数据

                        > 注意:return后面不可以有执行语句

八、方法的使用:

        > 可以调用当前类的属性、方法

                > 特殊:方法A中,又调用了方法A —> 递归方法

           方法中,不可以定义方法

九、变量的分类

        > 方式一:根据数据类型分类

                > 基本数据类型(primitive type)

                        > 数值型

                                > 整数类型:byte、short、int、long

                                > 浮点类型:float、double

                        > 字符型:char

                        > 布尔型:boolean

                > 引用数据类型(reference type)

                        > 类:class <— 字符串在这里

                        > 接口:interface

                        > 数组:[]

        > 方式二:按照在类中声明的位置分类

                > 成员变量

                        > 实例变量:不以static修饰

                        > 类变量:以static修饰

                > 局部变量

                        > 形参:方法、构造器中定义的变量

                        > 方法局部变量:在方法内定义

                        > 代码块局部变量:在代码块内定义

⚠️一些练习题

/*
 * 声明一个日期类型MyDate:
 * 属性:
 * 年year,月month,日day
 * 创建两个日期对象,分别赋值为:你的出生日期,你对象的出生日期,并显示信息
 */

public class DateTest{
    public static void main(String[] args){
        MyDate d1 = new MyDate();
        d1.year = 1991;
        d1.month = 6;
        d1.day = 30;

        MyDate d2 = new MyDate();
        d2.year = 1991;
        d2.month = 7;
        d2.day = 14;

        System.out.println("我的" + d1.info());
        System.out.println("我对象的" + d2.info());
    }
}

class MyDate{
    int year;
    int month;
    int day;

    public String info(){
        return "出生日期为:" + year + "年" + month + "月" + day + "日";
    }
}
/*
 * 练习2:利用面向对象的编程方法,设计类Circle计算圆的面积
 */

public class CircleTest{
    public static void main(String[] args){
        Circle c1 = new Circle();
        c1.radius = 2.1;
        double area = c1.findArea();
        System.out.println("圆的面积为:" + area);
    }
}

class Circle{
    double radius;
    double area;

    public double findArea(){
        area = Math.PI * radius * radius;
        return area;
    }
}
/*
 * 1)编写程序:声明一个method方法,在方法中打印一个10 * 8的*型矩形,在main方法中使用该方法
 * 2)修改上一个程序,在method方法中,除打印一个10 * 8的*型矩形外,再计算该矩形的面积,并将其作为方法的返回值,在main方法中调用该方法,接受返回的面积值并打印
 * 3)修改上一个程序,在method方法中提供m和n两个参数,方法中打印一个m * n的*型矩形,并计算该矩形的面积,将其作为方法返回值,在main方法中调用该方法,接受返回的面积值并打印
 */

public class RectangleTest{
    public static void main(String[] args){
        RectangleTest test = new RectangleTest();
        int area = test.method();
        System.out.println("面积为:" + area);
    }

    //第一问
    public void method{
        for(int i = 0;i < 10;i++){
            for(int j = 0;j < 8;j++){
                System.out.print("* ");
            }
            System.out.println();
        }
    }

    //第二问
    public void method{
        for(int i = 0;i < 10;i++){
            for(int j = 0;j < 8;j++){
                System.out.print("* ");
            }
            System.out.println();
        }
        return 10 * 8;
    }

    //第三问
    public int method(int m,int n){
        for(int i = 0;i < m;i++){
            for(int j = 0;j < n;j++){
                System.out.print("* ");
            }
            System.out.println();
        }
        retrun m * n;
    }
}
/*
 * 练习4:
 *  > 定义数组题目
 *  > 定义类Student,包含三个属性:学号number(int)、年级state(int)、成绩score(int),创建20个学生对象,学号为1-20,年级和成绩都有随机数确定
 *  > 问题一:打印出3年级(state值为3)的学生信息
 *  > 问题二:使用冒泡排序按学生成绩排序,并遍历所有学生信息
 *  
 *  > 提示:生成随机数Math.random(),返回值类型double
 *  > 四舍五入取整数:Math.round(double d),返回值类型long
 */

public class StudentTest{
    public static void main(String[] args){
        //声明Student类的数组
        Student[] stus = new Student[20];

        //为数组元素赋值
        for(int i = 0;i < 20;i++){
            //创建数组元素
            stus[i] = new Student();
            //给Student对象的属性赋值
            stus[i].number = i + 1;
            Stus[i].state = (int)(Math.Random() * (6 - 1 + 1) + 1);//年级范围:1-6年级
            Stus[i].score = (int)(Math.Random() * (100 - 0 + 1) + 0);//成绩范围:0-100分
        }
        
        //遍历学生数组
        for(int i = 0;i < stus.length;i++){
            System.out.println("学号:" + stus[i].number + ",年级:" + stus[i].state + ",成绩:" + stus[i].score);
        }

        //问题一:打印出3年级(state值为3)的学生信息
        for(int i = 0;i < stus.length;i++){
            if(stus[i].state == 3){
                System.out.println("学号:" + stus[i].number + ",年级:" + stus[i].state + ",成绩:" + stus[i].score);
            }
        }

        //问题二:使用冒泡排序按学生成绩排序,并遍历所有学生信息
        //使用冒泡排序对学生成绩进行排序
        for(int i = 0;i < stus.length - 1;i++){
            for(int j = 0;j < stus.length - 1 - i;j++){
                Student temp = new Student();
                if(stus[j].score > stus[j + 1].score){
                    temp = stus[j + 1];
                    stus[j + 1] = stus[j];
                    stus[j] = temp;
                }
            }
        }

        //遍历学生信息
        for(int i = 0;i < stus.length;i++){
            System.out.println("学号:" + stus[i].number + ",年级:" + stus[i].state + ",成绩:" + stus[i].score);
        }
    }
}

class Student{
    int number;//学号
    int state;//年级
    int score;//成绩
}
/*
 * 练习4:【升级版】
 *  > 定义数组题目
 *  > 定义类Student,包含三个属性:学号number(int)、年级state(int)、成绩score(int),创建20个学生对象,学号为1-20,年级和成绩都有随机数确定
 *  > 问题一:打印出3年级(state值为3)的学生信息
 *  > 问题二:使用冒泡排序按学生成绩排序,并遍历所有学生信息
 *  
 *  > 提示:生成随机数Math.random(),返回值类型double
 *  > 四舍五入取整数:Math.round(double d),返回值类型long
 */

public class StudentTest{
    public static void main(String[] args){
        //声明Student类的数组
        Student[] stus = new Student[20];

        //为数组元素赋值
        for(int i = 0;i < 20;i++){
            //创建数组元素
            stus[i] = new Student();
            //给Student对象的属性赋值
            stus[i].number = i + 1;
            Stus[i].state = (int)(Math.Random() * (6 - 1 + 1) + 1);//年级范围:1-6年级
            Stus[i].score = (int)(Math.Random() * (100 - 0 + 1) + 0);//成绩范围:0-100分
        }

        StudentTest test = new StudentTest();

        test.print(stus);
        test.searchState(stus,3);
        test.bubbleSort(stus);
    }

    //遍历学生数组的方法,形参输入对应数组,即可完成操作
    public void print(Student[] stus){
        for(int i = 0;i < stus.length;i++){
            System.out.println(stus[i].info());
        }
    }

    //打印指定年级学生信息的方法,形参输入对应的年纪,即可完成操作
    public void searchState(Student[] stus,int state){
        for(int i = 0;i < stus.length;i++){
            if(stus[i].state == state){
                System.out.println(stus[i].info());
            }
        }
    }

    //冒泡排序方法,排序后对数组进行遍历
    public void bubbleSort(Student[] stus){
        for(int i = 0;i < stus.length - 1;i++){
            for(int j = 0;j < stus.length - 1 - i;j++){
                Student temp = new Student();
                if(stus[j].score > stus[j + 1].score){
                    temp = stus[j + 1];
                    stus[j + 1] = stus[j];
                    stus[j] = temp;
                }
            }
        }
        
        for(int i = 0;i < stus.length;i++){
            System.out.println(stus[i].info());
        }
    }
}

class Student{
    int number;//学号
    int state;//年级
    int score;//成绩

    public String info(){
        return "学号:" + number + ",年级:" + state + ",成绩:" + score;
    }
}
sqli-labs(less-11) 先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦。... 阅读详情

相关推荐

FA 新增资产API Demo

DECLARE l_trans_rec fa_api_types.trans_rec_type; l_dist_trans_rec fa_api_types.trans_rec_type; l_asset_hdr_rec fa_api_types.asset_hdr_rec_type; l_asset_desc_rec fa_a

chosen1brain的专栏 2142

java 面向对象(二):JVM内存结构

编译完源程序以后,生成一个或多个字节码文件。 我们使用JVM中的类的加载器和解释器对生成的字节码文件进行解释运行。意味着,需要将字节码文件对应的类加载到内存中,涉及到内存解析。 《JVM规范》 虚拟机栈,即为平时提到的栈结构。我们将局部变量存储在栈结构中 堆,我们将new出来的结构(比如:数组、对象)加载在对空间中。补充:对象的属性(非static的)加载在堆空间中。 方法区:类的加载信息、常量池、静态域 堆(Heap),此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里..

创业项目 447

2025ICPC南昌邀请赛题解

2025ICPC南昌邀请赛由XDU和WHU联合出题的ICPC南昌邀请赛,榜单显示8题金、6题银、5题铜。

weixin_50089904的博客 1957

【方法】方法的基本使用练习

编写程序,声明一个method方法,在方法中打印一个10x8 的*型矩形, 在main方法中调用该方法。修改上一个程序,在method方法中,除打印一个10x8的*型矩形外,再计算该矩形的面积,并将其作为方法返回值。在main方法中调用该方法, 接收返回的面积值并打印修改上一个程序,在method方法提供m和n两个参数,方法中打印一个 mxn的*型矩形,并计算该矩形的面积, 将其作为方法返回值。在main方法 中调用该方法,接收返回的面积值并打印。 方法的重载 ...

qq_49047454的博客 401

从零开始学嵌入式之STM32——1.什么是STM32

它是ST公司推出的一系列单片机的统称。ST----指的是ST公司----意法半导体。意法半导体,成立于1987年,是由意大利的SGS微电子公司和法国的Thomson半导体公司合并而成。ARM目前主要是ARM架构处理器及外围组件的电路设计方案,知识产权授权的形式收取费用,其他公司根据ARM的方案设计出CPU产品。,它以应用为核心,软硬件可裁剪,旨在实现对设备的控制、监测或辅助功能,区别于通用计算机(如 PC、服务器)的 “一机多用” 属性。在嵌入式领域,目前主流的是cortex-M3内核推出的芯片。

qshdyy的博客 1853

VASPKIT绘制平面平均电荷差分密度

平面平均密度差(planar-averaged electron density difference)是密度差的衍生。密度差是个三维空间函数,经常通过绘制平面图、等值面图方式图形化考察。虽然这两种图很直观,但平面图会受到截面选取的影响,而等值面图会受到等值面数值(isovalue)选取的影响,因此都有一定任意性,也不容易定量讨论。对于电子转移有比较明确方向的情况,可以绘制平面平均密度差曲线,由此可以清楚地考察垂直于选取的方向上每个截面上的密度差积分值,在定量讨论、对比上比较便利。

weixin_43948934的博客 1万+

【贪玩巴斯】2021,JAVA每日一题,每日一练——第一集(10题)

1. 循环练习for语句 // 2020年1月24日 题目: 从1循环到150 并在每一行后面打印一个值,另外在每个3的倍数行上打印出“foo",在每个5的倍数行上打印"biz",在每个7的倍数行上打印输出"baz" 代码如下: public class Diyiti20200124 { /** MADE IN 贪玩巴斯 20200124 23:49 */ public static void main(String[] args) { // TO...

D16100的博客 1115

怎样让你的论文看起来“像人写的”?只用三招直接去除AI味(附提示词)

当然如果你在实际使用中还有其他需求,比如降重润色、改写翻译等,也可以结合七哥的专业写作平台来辅助,这个高级学术平台已经内置了ChatGPT4o、ChatGPT4.1、Claude3.7、满血版DeepSeek-R1等AI大模型,帮你写文献综述、干课题申报、写论文等学术任务绝对每一点问题。比如我自己的一套学术写作平台,其中的“降重与润色”模块整合了多种GPTs应用,除了能帮助调整语言风格、避免雷同表达,还可以顺带降个重,对于提升学术文本的整体质量还是非常有用的。一、为什么用AI写出来的文章会有AI味?

智能AI让学术科研更容易 1680

学习Java

练习: 利用面向对象的编程方法,设计类Ciecle计算圆的面积 CircleTest.Java ExerTest.java 3.1 编写程序, 声明一个method方法, 在方法中打印一-个108的型矩形,在main方法 中调用该方法。 * 3.2 修改上一个程序, 在method方法中,除打印一-个10* 8的型矩形外, 再计算该矩形的面积, * 并将其作为方法返回值。 在main方法中调用该方法,接收返回的面积值并打印。 * 3.3 修改上一个程序, 在method方法提供m和n两个参数, 方法中打

qq_50214988的博客 257

【推荐100个unity插件】基于关节物理控制的自行车、电动车、摩托车模拟解决方案——Simple Bicycle Physics

摘要 "简易自行车物理"是Unity的自行车模拟资源包,支持Animation Rigging,实现基于关节物理的自行车控制。兼容所有平台和渲染管线,包含预制体、材质、脚本等资源。核心脚本Bicycle Controller管理自行车物理属性,支持自定义角色设置和移动端控制。安装后,用户可快速配置骑行场景,调整转向、速度、重心等参数,并支持地面贴合、兔跳等功能。适用于开发各类自行车模拟游戏和应用。 (字数:149)

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1365

【Java自学】搬砖中年人代码自学之路Lesson 8

这一堂课听的最多的一句话就是「这部分先了解就可以,后面到了xxx的时候会深入的讲」,就给人一种后面还有茫茫多的只是要学习一样。。。。 不过今天学的这些东西自己倒是能听懂,唯独就是后面的练习题,在各种点来点去的时候,会搞不清楚测试的顺序,创建类什么的都已经ok了,但是就是在使用调用的时候会受忙脚乱,不知道该怎么调用,或者说不知道该调用谁再调用谁,这个估计后面还得多练练才能搞清楚,脑子慢真心伤不起 在就是免费课确实没有付费课香,这么多的资料全都得自己手动敲下来,而不是像人家一样直接点开文件夹拿出报名时候给到

Ericcoding的博客 289

完美解决unknown failed to transfer from http://0.0.0.0/ during a previous attempt的错误

完美解决unknown failed to transfer from http://0.0.0.0/ during a previous attempt的错误

念兮为美 2279

【Java自学】搬砖中年人代码自学之路Lesson 4

这一课学的确实是非常的头疼了,各种int i、int j,给本不富裕的脑细胞增加了超级多的压力。。。 跟着敲代码都有敲不对的时候,这个确实有点丢人。上课的时候老师用的是EditPlus,不过因为感觉后面就要换成Eclipse了,所以也就懒得下载了,一直用笔记本敲(弱弱的说一句居然macOS怎么新建笔记本我都百度了一下。。。)。之前就听说想要学好代码,需要数学特别好,真是这样的话,那我这个高考数学87的战五渣真的能学明白这个东西么。。。 感觉现在特别像上学的...

Ericcoding的博客 411

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【Java自学】搬砖中年人代码自学之路Lesson 1

无奖竞猜:大概多久我会放弃lol

Ericcoding的博客 584

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【Java自学】搬砖中年人代码自学之路Lesson 7

又一课完事儿,真的是越学越麻烦了。。。 不过其实感觉还是挺好玩儿的,还是挺憧憬以后自己学完这些乱七八糟的东西之后能够写出点自己想写的东西的感觉的,就是不知道这一天什么时候到 最近又开始忙了,天天一堆的破事儿,上班之后想学点什么东西确实是很难 一方面要跟自己抢时间,需要挤出额外的时间来学习 另一方面要跟自己的惰性做斗争,工作之后确实是就想烂在床上不动,每个休息日的时候微信步数基本上都过不了百 最最难的部分就是要跟自己日益退化的吸收能力做斗争,明显感觉到现在学东西不如上学的时候快了,当时大学偷懒因为不

Ericcoding的博客 490

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

【Java自学】搬砖中年人代码自学之路Lesson 5

是的我还在。。。。 2022年真的是我经历过的最牛逼的一年了,从年初开始到现在3个多月的时间,先后经历了2次疫情隔离,合计一个半月。作为一个自控力非常弱鸡的人,隔离在家对我来说简直就是噩梦。。。 真的是会懒,而且长期两地分居的我第二次隔离被隔离在了家中,居然过了一个月的已婚生活,每天徘徊在厨房做饭和躺着消遣两点一线之间,实在是提不起精神学习,这一点还是要自我抨击一下的,真弱!!梦想呢!!宏图壮志呢!! 不过还好,还是重新捡起来跟着学习了,700多课的视频课已经听了200多课了,现在立个flag,希望自

Ericcoding的博客 497

【Java自学】搬砖中年人代码自学之路Lesson 2

Java自学第二课,讲真学起来已经有点崩溃了, 一、关键字(keyword): 1、定义:被Java语言赋予了特殊含义,用作专门用途的字符串(单词) 2、特点关键字中所有的字母都为小写 1、用于定义数据类型的关键字: 1、class 2、interface 3、enum ...

Ericcoding的博客 328

【Java自学】搬砖中年人代码自学之路Lesson 3

讲真本次课前半部分讲逻辑的时候真的是想起来刚上班偷偷摸摸考在职MBA时候被逻辑题支配的恐惧了。。。 16年夏天我还是一个刚刚毕业两年的小年轻,当时的工作因为跟高考艺术生相关,所以忙半年闲半年,所以在闲的半年莫名其妙的开始备考在职MBA(跟当年大四了才开始想要考北语的研究生一样),结果自然是没有考过,但是现在还记得当时上班的时候,背后就是直属领导,然后就看她每天忙啊忙啊忙啊忙啊,根本就不知道在忙什么(现在好像也是差不多的情况,只不过自己也变成了小领导,但是我依然还是在摸鱼,嘘...

Ericcoding的博客 243

Lesson 00 前言

C++是基于C语言而产生的,它既可以进行C语言的过程化程序设计(面向过程),又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行面向对象的程序设计。

callmeggyh的博客 165

面向对象程序设计先导lesson1心得体会

  因为听说大二下OO这门课是个重头戏,再加上自己C学的还可以,我决定笨鸟先飞,提前学习一下JAVA的基础。课程和预想的有稍许不同,可以说比预想的好太多。注重实践,引导式教学,给自己思考留出了很大的空间。课堂上学到的东西也很多。虽然很多内容与C相似,但还是有很大不同。JAVA里面的类可以看作特殊的C的结构,结构体里不但有各种变量,还可以在里面写函数,这些函数在JAVA里就叫方法。一般来讲一个文件里...

weixin_30347009的博客 83

Python lesson_1,一些简单的基础语法(1)

基础

Hailee_的博客 317

Machine Learning(Lesson1 机器学习入门)

文章目录课程介绍作者的话教材选择学习路线学习工具(不会安装的自学)什么是机器学习?搞懂这几个概念,你就知道机器学习在干嘛了机器学习分类(部分引用)什么是深度学习机器学习的主要挑战(看书) 课程介绍 作者的话 作为一个开始接触机器学习时间不过半年多的初学者来说,开一门课显得有一些不自量力了,其实最初的目的是督促自己对零散的知识进行整理记录,杂乱无章的知识不成体系就如同用竹篮打水,最后什么都不会留下。 因此,我希望通过博客记录下自己的学习以及思考。但是,为什么我要说这是一门课呢,我也不记得是谁说的“当你能将知识

qq_21043585的博客 624

python 判断数组中是否在某个范围以内_Python-100-Days part1 lesson1-15 总结v1.4

给目前的自学项目前15课写一次总结,项目原地址为:Python - 100天从新手到大师​github.com 前15节课为我们简单展示了python作为2019年最火的编程语言有什么特别之处。python之禅体现了作者作为一位奥卡姆剃刀原理的奉行者,给我们提供了一个高度简洁且优雅的编程语言。譬如打印命令就是短短的一行:print('hello world') hello wo...

weixin_39936388的博客 1333

lesson1: 二次学习C——解读C语言的基本结构

重新学习C语言——解读C语言的基本结构

老和山下的小学童 505

黑客技术合法学!7 个优质网站,零基础入门到精通不踩坑!

在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。作为一名11年的资深白帽,给大家推荐7个我自己常用的学习网站,并且都是合法的学习网站,能带你了解到黑客有关的技术,视频,电子书,实践,工具,数据库等等相关学习内容。SecurityTube的所有视频都是引用自You Tube,上面的视频种类十分丰富,这些视频都是由行业专业人士,或者是经验丰富的安全研究人员编写的。

wananxuexihu的博客 1050
上一篇: 【Java自学】搬砖中年人代码自学之路Lesson 5
下一篇: 【Java自学】搬砖中年人代码自学之路Lesson 7
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值