发表于: 2019-11-23 08:58:58

1 1120


构造方法

1 什么是构造方法?

当一个对象被创建时候,构造方法用来初始化该对象。构造方法和它所在类的名字相同,但构造方法没有返回值。

构造方法的对象是类,任何类都有构造方法,如果没有自定义其方法,那么java编译器就会自动的选择默认的构造方法。

新创建对象时,至少会调用一次构造方法,并且一个类可定义多个构造方法。

public class Human {
// Human 的类下面创建三个属性:height age sex  public 修饰符表示作为公用属性
   public double height;
   public int age;
   public int sex;
// 创建Human的三个方法,crylaughPrintBaseMes 加了public,是其作为方法作为公共的属性被访问和调用
   public void cry(){
System.out.println("我在哭!");
       }
public void laugh(){
System.out.println("我在笑!");
       }
public void PrintBaseMes(){
System.out.println("我的身高是"+height+"cm");
           System.out.println("我的年龄是"+age+"");
           if (this.sex == 0)
System.out.println("我是男性!");
           else
               System.out.println("我是女性!");
       }

}

2 为什么要用构造方法?

使用构造方法,能够摒除默认的方法,从而为后期的封装和创建新的对象提供简便。

指定了类的学习方法,就java编译器就不会使用编译器的默认的构造方法了


PS:概念:构造方法重载,即方法名相同,但参数不同的多个方法,调用时会选择相应的方法。


3 怎么应用构造方法?

先看看下面的图,理解方法是如何构成的

构造方法,分为三种,无参数、有一个参数、有多个参数。例子如下

public class Human{
// 构造方法中无参数
   public Human(){

}
// 构造方法中有一个参数    
   public Human(String name){

}
// 构造方法中有2个参数      
   public Human(String name,int age){

}
}

遇到问题

命名报错

解决方法,及总结

2019年11月22日遇到的问题:

我的idea注释和中文一直出现了乱码的问题,试过了网上各种个样的方法,但是结果还是没有调整好。

我开始的思路是:

1 按网上已经提供的方法,就能够解决我这个问题,直到后面所有的方法都试过了的,但是还是没有被解决


2 采用重新安装的思路,不过依然还是不行,控制台终端和代码注释依然存在问题


3 从官网下载intellij 再次安装而不是破解版,我想这次应该可以了吧,但是还是不行,只要是同一个版本2019.2.4安装后中文就是乱码


4 后面找到师兄,发现师兄也搞不定,再之后,我想下载之前的ideab版本试试看,然后我就装了一个特别老的版本,结果发现不会乱码,然后我就想,那装一个后推一定的版本应该也可行。


5 为了验证上一步中的想法,我下载了一个2018.3.5的intellij版本,结果发现可行,开心.jpg,可是后面又发现找了一圈没有破解版本,试了各种各样破解方法,还是没能成功,直到早上找到一个,现在终于弄好了。

-------------分割线--------------

思路总结

1 如果发现问题,那么快速从网上去找到别人的方法试着拯救。


2 考虑到最坏的情况,或者重装软件或者重装系统(这些东西时间代价太大了),所以尽可能的选择低时间代价的——重装软件。这个时候可以试着装不同版本的软件看看哪些会出问题,哪些不会出问题。如果可以的话,那么就选择离开自己相对近的那个不出问题的版本。


3 关于软件的破解的问题

这花了我很长的时间,因为方法无效,所以整个过程都是在做无用功,如果你发现你采用的同样的流程和步骤没有效果,那么一定要换一种方法,直到找到真正能够解决你面对问题的方法为止。

总结一下,intellij的破解方式

1 使用active code 激活,网上很多,但是基本无效

2 是services 激活,基本也无效

3 用XXXcrack.jar + active code的方式,效果最好,试错成本低


这几天的总结

1 因为有之前的语法在,所以自己在过java语法的时候还是很快的,直到遇到了OOP(面向对象基础)这个让我感觉到特别难,花了两天的时间还是没能够搞定一点。

java 的基本数据类型

java 的流程控制-三个循环-两个分支

java 的基本运算

java 的数组以及如何编写冒泡排序


后面遇到了OOP面向对象:

对于类 对象 方法的再次深入解析,我能够感觉到这个东西的还是挺难理解的,特别是有些很小的细节,每个细节的构造的不同,对于面向对象来说都是不同的实例,更别说类和类之间,类和对象、对象和对象之间的各种关系,还有不同的修饰,这样排列组合下来,花样繁多,这个也是为什么一下很难理解的原因,而且很容易把人绕晕。


那么怎么样解决这个问题,我觉的今天可以试试归类拆分和费曼技巧,我相信这个应该更容易让我理解这个东西


另外,我昨天也问了我的好友这个问题,他提供了一个方法——做小项目,比如编写贪食蛇或者坦克大战或者打飞机这些小游戏。



今天的计划

昨天电脑出了问题,没有提交,所以只能今天来提交了,计划也是写今天的,继续面向对象基础,基础的东西多花点时间基本问题不大,如果基础都没有,去做任务1的各个步骤,即使参照师兄们的日报可以做出来,但这对于自己的学习可能没那么好,所以前期宁可先打基础,不急,基础好了,后面就会很快,要先慢后快,在关键的地方慢下来。


面向对象的复习——构造方法和方法重载

public class Hero {
   String name;
   String skill_q;
   String skill_w;
   String skill_e;
   String skill_r;

  // 构造方法  

public Hero(String name){

       this.name = name;

   }

// 方法重载

public Hero(String name,String skill_q,String skill_w,String skill_e,String skill_r){
this.name = name;
       this.skill_q = skill_q;
       this.skill_w = skill_w;
       this.skill_e = skill_e;
       this.skill_r = skill_r;
   }
public void fight(String name){
// this 指向和 传入的参数是不一样的
       System.out.println(this.name+"开始战斗!");
       System.out.println(name+"开始战斗!");
   }

public static void main(String[] args) {
       Hero Hg = new Hero("牛头","","","控制","大招");
       Hg.fight("火箭");

   }
}

总结:

1 如何来编译,新建类,类名首字母要大写


2 编写成员变量的属性,其中要注意static修饰的应用

① static的编译过程要优先于对象,所以static声明时,没有this指向。

② static声明的属性或者方法属于整个类,而不是某个对象


3 编写属性后,需要对某些属性进行初始化,这个时候就用到了方法重构,因为即使不主动去重构方法,编译器也会默认的赋予重构方法。(下图中红色就是在不构建方法初始化后,系统默认的重构方法)

public class Hero {
String name;
   String skill_q;
   String skill_w;
   String skill_e;
   String skill_r;

public Hero{


}

  // 构造方法  

public Hero(String name){

       this.name = name;

   }

}

4 this 和 方法中传参指向的不同:


忘记数据库密码,如何修改数据库密码?

1 按 ctr + shift + esc 找到mysql.exe进行关闭,或者按win + R 键进入DOS窗口输入:

cd C:\Program Files\MySQL\MySQL Server 5.5\bin(这个是我的安装目录) 进入你的mysql的安装目录


如果发现输入:net stop mysql 不是内部命令,请按下图操作

2 然后输入: net stop mysql,可以看到所有的都停止了,或者没有运行服务


3 输入:mysqld --skip-grant-tables 绕过密码

4 此时,保持这个窗口不做任何操作,重新再win + R 启动一个窗口,进入mysql安装目录

① cd +你的安装路径        进入安装目录

② 输入:mysql,进入mysql
③ 运行:use mysql; 获得修改的权限

④ 运行:update user set password=password("输入你想改的密码(我的是123)")where user="root";

⑤ 运行:flush privileges;刷新

⑥ 运行:quit 退出

5 最后,重新打开Navicat输入密码进行连接即可。


---------分割线---------


JDBC访问数据库总结:

1 JDBC是什么?

JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。DBC是一个规范,它提供了一整套接口,允许以一种可移植的访问底层数据库API。


2 JDBC的作用是什么?

  • • 使得连接到数据库
  • • 创建SQL或MySQL语句
  • • 执行SQL或MySQL的查询数据库


3 JDBC的步骤

// 第一步 加载驱动程序
class.forName(driverClass)
// 加载mysql驱动
class.forName("com.mysql.jdbc.Driver")
// 加载oracle驱动
Class.forName("oracle.jdbc.driver.OracleDriver")
// 第二步 获得数据库连接:
DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/imooc", "root", "root");
// 第三步 创建Statement\PreparedStatement对象:
conn.createStatement();
conn.prepareStatement(sql);

具体见我下面搭建的JDBC详细:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class Testdata {
public static final String URL = "jdbc:mysql://localhost:3306/neal?serverTimezone=UTC";
   public static final String USER = "root";
   public static final String PASSWORD = "123";

   public static void main(String[] args) throws Exception {
//1.加载驱动程序
       Class.forName("com.mysql.jdbc.Driver");
       //2. 获得数据库连接
       Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
       //3.操作数据库,实现增删改查
       Statement stmt = conn.createStatement();
       ResultSet rs = stmt.executeQuery("SELECT * FROM registration01_from");
       //如果有数据,rs.next()返回true
       while(rs.next()){
System.out.println(rs.getString("name")+" 年龄:"+rs.getInt("age")+" 入学时间 "+rs.getLong("star_learn_time"));
       }
}

}

细节注意:

1 导入包,alt + enter
2  ?serverTimezone=UTC 加入到url的后面才不会产生乱码

3 数据库语法的修改,然是最后输出的字段和数据类型要和数据库中的一致

4 JDBC只要理解就行,不需要特别深入,后期直接用框架和接口就行,只是通过这个来实现数据库的连接和增删查改等数据库操作。



返回列表 返回列表
评论

    分享到