发表于: 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的三个方法,cry、laugh、PrintBaseMes 加了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只要理解就行,不需要特别深入,后期直接用框架和接口就行,只是通过这个来实现数据库的连接和增删查改等数据库操作。
评论