Java学习笔记(韩顺平教育 b站有课程)
Java学习地址
视频地址
真的很推荐大家去听老韩的课(非常细谁听谁知道):【零基础 快速学Java】韩顺平 零基础30天学会Java_哔哩哔哩_bilibili
使用心得
说一下我使用的心得:
1. 学过C和C++,作为软件工程的学生大一下学期的 Java 属实是混过去的(60飘过),当我真正想开始好好学专业课时才发现,面向对象的思想和语言真的很重要,而且几乎贯穿了你整个大学生涯,而Java 又作为典型的面向对象语言,毫不夸张的讲,不会 Java你会寸步难行,十分难受。
2. 由于算是有一点基础,但是听老韩的课也没有想象中的啰嗦,大可以二倍速听前面的基础内容,如果你一点基础没有,一定要正常速度跟着老韩敲代码,如果你认为前面循环选择分支和数组你都没有什么问题,也可以从面向对象的思想直接开始,很基础很入门,同样也很实用。
编译器
可以使用老韩上课讲的命令行,但是由于我已经习惯了idea 所以直接用了idea进行编程,之后会出一篇简单使用 idea 的博客。
笔记软件
以前用的 有道云笔记 ,因为有学姐推荐,然后一直在用,但是开始记Java的时候用的 语雀 ,给大家看一下界面,比较讨喜,同步也还不错。
Java重要特点
- 面向对象(oop)
- 健壮性:强类型机制,异常处理,垃圾的自动收集
- 跨平台性的 (一个编译好的.class可以在多个系统下运行)
TEST.java -> TEST.class (java虚拟机机制) 在windows上和在Linux都可以运行
- java语言是解释型的语言 : js php java 解释型语言(代码不能在编译器直接运行,需要用到解释器) c/c++ 编译型语言 (二进制代码,可以直接在编译器里面运行)
Java开发快速入门
执行流程分析
.java文件 编译后 .class文件 运行后 结果
(源文件) Javac (字节码文件) java
编译:通过编译器将其编译成JVM可以识别的字节码文件 通过javac编译工具对其.java文件进行编译 如果程序没有错误 酒鬼生成字节码文件,即为可以执行的Java程序
运行:本质就是将 .class文件装载到 jvm机执行
注意:对修改后的Java文件需要重新编译后,再生成新的.class文件后才能正常运行
Java开发注意事项
- 由 class 组成
- main 方法由固定的书写格式
- 一个源文件最多只有一个 public 类 但其他类的个数不限制
- 每一个类编译以后,都对应一个.class文件 (,class 文件可以为空类)
- 文件中如果有public类,文件必须与public类同名
- 可以将main方法写在非public类中,然后指定运行当前类,这样入口就是非public类的main方法
Java转义字符
//注释,也代表转义字符的演示 // \n 换行符 // \t 对齐符 public static void main(String[] args){ System.out.println(" "); } // \ 输出一个斜杠 写法: \\win11 // 第一个用作转义符 第二个才是真正输出的\ // 如果要输出两个 \ 写法: \\\win11 // 想要输出双引号 “” 写法: "老韩说:\"要好好学习\"" // \r 一个回车 public static void main(String[] args){ System.out.println("韩老师教育\r北京"); } // 输出结果为:北京师教育 如果改为: public static void main(String[] args){ System.out.println("韩老师教育\r\n北京"); } // 输出结果为:韩老师教育 // 北京
易犯错误(用cmd里的错误)
- 找不到文件
- 主类名和文件名不一致
- 缺少分号
- 英文与中文字符混在一起(非法字符)
- 拼写错误?环境错误?(业务错误)
注释(comment)
- 提高代码可读性(思想通过注释表达出来)
- 帮助其他阅读你代码的人理解代码
- 对你自己的程序负责任
代码演示
// 单行注释 /* 多行注释 */ 细节: 注释掉的代码块是不会被程序 (解释机) 执行 多行注释中不允许再嵌套多行注释 有两个或多个结尾字符!!!! javadoc 文档注释 基本格式: javadoc标签 Javadoc -d 文件夹名 -xx -yy 文件.java (-xx和-yy就是标签) /** * @author 王帅 * @version 1.0 */ public static void main(String[] args){ System.out.println(" "); }
Javadoc标签汇总:
标签 |
描述 |
示例 |
@author |
标识一个类的作者 |
@author description |
@deprecated |
指名一个过期的类或成员 |
@deprecated description |
{@docRoot} |
指明当前文档根目录的路径 |
Directory Path |
@exception |
标志一个类抛出的异常 |
@exception exception-name explanation |
{@inheritDoc} |
从直接父类继承的注释 |
Inherits a comment from the immediate surperclass. |
{@link} |
插入一个到另一个主题的链接 |
{@link name text} |
{@linkplain} |
插入一个到另一个主题的链接,但是该链接显示纯文本字体 |
Inserts an in-line link to another topic. |
@param |
说明一个方法的参数 |
@param parameter-name explanation |
@return |
说明返回值类型 |
@return explanation |
@see |
指定一个到另一个主题的链接 |
@see anchor |
@serial |
说明一个序列化属性 |
@serial description |
@serialData |
说明通过writeObject( ) 和 writeExternal( )方法写的数据 |
@serialData description |
@serialField |
说明一个ObjectStreamField组件 |
@serialField name type description |
@since |
标记当引入一个特定的变化时 |
@since release |
@throws |
和 @exception标签一样. |
The @throws tag has the same meaning as the @exception tag. |
{@value} |
显示常量的值,该常量必须是static属性。 |
Displays the value of a constant, which must be a static field. |
@version |
指定类的版本 |
@version info |
文档注释范例
import java.io.*; /** * 这个类演示了文档注释 * @author Ayan Amhed * @version 1.2 */ public class SquareNum { /** * This method returns the square of num. * This is a multiline description. You can use * as many lines as you like. * @param num The value to be squared. * @return num squared. */ public double square(double num) { return num * num; } /** * This method inputs a number from the user. * @return The value input as a double. * @exception IOException On input error. * @see IOException */ public double getNumber() throws IOException { InputStreamReader isr = new InputStreamReader(System.in); BufferedReader inData = new BufferedReader(isr); String str; str = inData.readLine(); return (new Double(str)).doubleValue(); } /** * This method demonstrates square(). * @param args Unused. * @return Nothing. * @exception IOException On input error. * @see IOException */ public static void main(String args[]) throws IOException { SquareNum ob = new SquareNum(); double val; System.out.println("Enter value to be squared: "); val = ob.getNumber(); val = ob.square(val); System.out.println("Squared value is " + val); } }
Java代码规范
- 类、方法的注释要以Javadoc的方式来写;
- 非Javadoc注释是为了给代码的维护者来(阅读者)看;
- tab将选中代码整体右移,shift+tab将选中代码整体左移;
- 运算符和等号两边习惯加上两个空格;
int n; int a = 10; int b = a + n;
- 源文件要用 UTF-8 存储;
- Java代码每一行的行宽尽量不要超过80个字符;
- 代码编写的 次行风格 和 行尾风格 。
import java.awt.*; import javax.swing.*; public class Circle99Frame extends JFrame { public static void main(String args[]){ JFrame frame=new Circle99Frame(); frame.setDefaultCloseOperation(DISPOSE_ON_CLOSE); frame.setSize(600,600); frame.setVisible(true); } public void paint( Graphics g){ g.drawString("circle 99",20,20); int x0=getSize().width/2; int y0=getSize().height/2; for(int r=0;r<getSize().height/2;r+=10){ g.setColor(getRandomColor()); g.drawOval(x0-r,y0-r,r*2,r*2); } } Color getRandomColor(){ return new Color( (int)(Math.random()*255),//random本身只产生(0~1)之间的小数, (int)(Math.random()*255), (int)(Math.random()*255) ); } } import java.awt.*; import javax.swing.*; public class Circle99Frame extends JFrame { public static void main(String args[]) { JFrame frame=new Circle99Frame(); frame.setDefaultCloseOperation(DISPOSE_ON_CLOSE); frame.setSize(600,600); frame.setVisible(true); } public void paint( Graphics g) { g.drawString("circle 99",20,20); int x0=getSize().width/2; int y0=getSize().height/2; for(int r=0;r<getSize().height/2;r+=10) { g.setColor(getRandomColor()); g.drawOval(x0-r,y0-r,r*2,r*2); } } Color getRandomColor() { return new Color( (int)(Math.random()*255),//random本身只产生(0~1)之间的小数, (int)(Math.random()*255), (int)(Math.random()*255) ); } }
变量
变量是程序的基本组成单位。
不论是用通过哪种高级语言编写程序,变量都是基本单位。
变量基本要素
类型,名称,数值
public static void main(String [] args){ int a=1; int b=3; b=89; System.out.println(a); System.out.println(b); }
变量的基本原理
变量的使用基本步骤
- 声明变量
- 赋值 (把 60赋给a)
- 使用
- 输出 (没有输出的程序是没有意义的)
面向对象编程
用单独的变量来解决问题不利于解决数据的管理
Java的设计者引入类与对象就是基于现有的问题新开发的一种手段和技术
class Cat{ // 属性(成员变量)field String name; int age; String color; } //实例化一个猫类 public static void main(String [] args){ Cat cat1 = new Cat(); //用 cat1 来接受new的cat cat1.name = "小白"; cat1.age = 3; cat1.color = "白色"; Cat cat2 = new Cat(); cat2.name = "小黑"; cat2.age = 6; cat2.color = "黑色"; //访问对象属性 System.out.println("第一只猫的信息"+cat1.name+" "+cat1.age+" "+cat1.color) }
理解类与对象
- 类是抽象的,概念的,比如人,猫。
- 对象是实例的,具体的,代表一个具体事物。
- 类是对象的模板,对象是类的实例。
对象在内存中的存在形式
数据一定有它对应地址
属性的注意事项
- 属性的定义语法词变量:访问修饰符、属性类型、属性名
class Person{ int age; String name; double str; boolean isPass; } public static void main(String [] args){ // 创建person对象 // p1是对象名(对象引用) // new Persom() 创建的对象空间(数据)才是真正的对象 Person p1 = new Person(); }
本文来自博客园,作者:王回甘,转载请注明原文链接:https://www.cnblogs.com/WScoconut/p/16099934.html