尚学堂·百战程序员--java300集视频笔记

1、java入门阶段

1.1、计算机发展史与未来方向

​算法是计算机的灵魂,编程语言是塑造计算机灵魂的工具。让计算机具备“灵魂”。可以按照人的意志运行,甚至某天按照计算机自己的意志运行,其核心就是“算法”。

1.2、多种编程语言介绍

​ C语言:适用于做底层系统开发,编程语言的经典,是各类高级语言的鼻祖,被誉为“语言之花”。

​ C++语言:作为C语言的扩展,既可以实现面向对象编程,也可以实现面向过程风格的程序:在科学计算、操作系统、网络通讯、系统开发、引擎开发等领域中因其执行效率较高,任被大量使用。

​ java语言:广泛应用于企业级软件开发、安卓移动开发、大数据云计算等领域,几乎涉及IT所有行业。

​ PHP语言:一般用于web开发领域,适用于大量的中小型网站开发。Objec-C和Swift语言:适用于iOS开发用于开发苹果软件。

​ javaScript语言:是一种脚本语言,流行的H5开发核心就是JavaScript语言。

​ Python语言:广泛应用于图形处理、科学计算、web编程、多媒体应用、引擎开发;尤其是机器学习和人工智能上有非常大的能力。

​ C#语言:面向对象、运行于.NET Framework之上的高级设计语言。

1.3、java三大版本的关系以及JavaME与安卓开发的关系

​ javaSE:标准版,定位于在个人计算机上的桌面应用。(如:win系统的桌面应用)

​ javaEE:企业版,定位于在服务器端的应用。(如:企业的后台服务器)

​ javaME:微型版,定位在消费型电子产品的应用上。(如:电视机顶盒内部的程序)

在这里插入图片描述

​ (注:安卓开发是基于java的)

1.4、java的优势

​ java核心优势位跨平台/可移植性。

1.5、java应用程序的运行机制

在这里插入图片描述

1.6、JVM_JRE_JDK

​ JVM就是一个虚拟的用于执行byte字节码的“虚拟计算机”。

​ JRE指java运行时环境,包含:java虚拟机库函数运行java应用程序所必须的文件。

​ JDK指java程序开发工具包,包含:JRE,以及编译器和调试器等用于程序开发的文件。

在这里插入图片描述

1.7、JDK目录介绍

​ bin文件夹:存放二进制文件的目录。

​ lib文件夹:存放java文件的类库,也称jar包。

​ src压缩包:JDK的源代码。

1.8、JDK环境变量PATH设置

​ 环境变量是在操作系统中一个具有特定名字的对象,包含的一个或者多个应用程序所将使用到的环境信息。

​ PATH是一个常见的环境变量,他是用来告诉操作系统,当要求系统运行一个程序而没有告诉他程序所在的完整路径时,系统除了在当前目录下寻找此程序外,还应到哪些目录下寻找。

1.9、最常用DOS命令

在这里插入图片描述

1.10、开发桌球小游戏

1.10.1、游戏版本1

**目标:**出现窗口

运行代码

import java.awt.*;
import javax.swing.*; 
public class BallGame extends JFrame{
	//窗口加载    
	voidlaunchFrame() {         
		setSize(1232,665); //定义窗口大小         					setLocation(50,50);//定位窗口位置         					setVisible(true);    //让窗口可见    
	}        
	//程序执行入口    
	publicstatic void main(String[] args) {         				System.out.println("第一个窗口小游戏--桌球");         		BallGamegame = new BallGame();         						game.launchFrame();    
	}
}

运行结果

在这里插入图片描述

1.10.2、游戏版本2

**目标:**加载两个图片

运行代码

import java.awt.*;
import javax.swing.*;
public class BallGame extends JFrame{     
    Imageball = Toolkit.getDefaultToolkit().getImage("images/ball.png");
    Imagedesk = Toolkit.getDefaultToolkit().getImage("images/desk.png");        //画窗口方法    
    publicvoid paint(Graphics g) {        
        System.out.println("窗口画了一次");        
        g.drawImage(desk,5, 30, null);        
        g.drawImage(ball,100, 100, null);   
    }        
    //窗口加载    
    voidlaunchFrame() {         
        setSize(1232,665); //定义窗口大小        
        setLocation(50,50);//定位窗口位置        
        setVisible(true);    //让窗口可见   
    }        
    //程序执行入口    
    publicstatic void main(String[] args) {        
        System.out.println("第一个窗口小游戏--桌球");        
        BallGamegame = new BallGame();         
        game.launchFrame();    
    }
}

运行结果

在这里插入图片描述

1.10.3、游戏版本3

**目标:**使小球图片水平方向动起来并实现边界检测,实现动画

运行代码

import java.awt.*;
import javax.swing.*; 
public class BallGame extends JFrame{     
    Imageball = Toolkit.getDefaultToolkit().getImage("images/ball.png");
    Imagedesk = Toolkit.getDefaultToolkit().getImage("images/desk.png");    
    doublex = 665/2;  //小球的横坐标    
    doubley = 665/2;  //小球的纵坐标  
    booleanright = true;    //方向    
    //画窗口方法    
    publicvoid paint(Graphics g) {         
        System.out.println("窗口画了一次");         
        g.drawImage(desk,5, 30, null);         
        g.drawImage(ball,(int)x, (int)y, null);            
        if(right){            
            x= x + 5;         
        }else{          
            x= x - 5;   
        }               
        if(x>1232-62-40){  //1232是窗口的宽度,62是桌子边框的宽度,40是小球的直径           
            right= false;        
        }             
        if(x<62){        
            right= true; 
        }    
    }       
    //窗口加载   
    voidlaunchFrame() {   
        setSize(1232,665); //定义窗口大小         
        setLocation(50,50);//定位窗口位置         
        setVisible(true);    //让窗口可见                
        //重画窗口,一秒画25次窗口     
        while(true){  
            repaint();       
            try{          
                Thread.sleep(40);  //40毫秒,1秒=1000毫秒,大约一秒画25次窗口             
            }catch(Exceptione) {                 
                e.printStackTrace();       
            }     
        }   
    }    
    //程序执行入口    
    publicstatic void main(String[] args) {         
        System.out.println("第一个窗口小游戏--桌球");         
        BallGamegame = new BallGame();         
        game.launchFrame();   
    }
}

运行结果

在这里插入图片描述

1.10.4、游戏版本4

**目标:**小球沿任意角度

运行代码

import java.awt.*;
import javax.swing.*;
public class BallGame2 extends JFrame{    
    Imageball = Toolkit.getDefaultToolkit().getImage("images/ball.png");   
    Imagedesk = Toolkit.getDefaultToolkit().getImage("images/desk.png");     
    doublex = 665/2;  //小球的横坐标  
    doubley = 665/2;  //小球的纵坐标  
    doubledegree = Math.PI/3;  //小球运动时的弧度   
    //画窗口方法    
    publicvoid paint(Graphics g) {         
        System.out.println("窗口画了一次");         
        g.drawImage(desk,5, 30, null);         
        g.drawImage(ball,(int)x, (int)y, null);    
        x= x + 10*Math.cos(degree);    
        y= y + 10*Math.sin(degree);     
        //上下的球桌边界      
        if(y>665- 62 - 40 || y<88) {    
            degree= -degree;   
        }              
        //左右的球桌边界      
        if(x<62|| x>1232 - 62 -40) {    
            degree= Math.PI -degree;     
        }         
    }       
    //窗口加载  
    voidlaunchFrame() {      
        setSize(1232,665); //定义窗口大小         
        setLocation(50,50);//定位窗口位置         
        setVisible(true);    //让窗口可见     
        //重画窗口,一秒画25次窗口  
        while(true){     
            repaint();    
            try{     
                Thread.sleep(40);  //40毫秒,1秒=1000毫秒,大约一秒画25次窗口            
            }catch(Exceptione) {                 
                e.printStackTrace();  
            }      
        }   
    }      
    //程序执行入口   
    publicstatic void main(String[] args) {         
        System.out.println("第一个窗口小游戏--桌球");         
        BallGame2game = new BallGame2();         
        game.launchFrame();   
    }   
}

运行结果

在这里插入图片描述

1.11、注释

​ 单行注释:以“//”开头,“//”后面均为注释。

​ 多行注释:以“/”开头,以“/”结尾,两者之间的内容为注释,多行注释可以作为行内注释,但不可以嵌套使用。

​ 文档注释:以“/**”开头,以“*/”结尾,注释中包含一些说明性文字及一些javaDoc标签,后期写项目时可以生成项目的API。

1.12、标识符规则_驼峰规则

​ 标识符必须以字母、下划线“_”、美元符号“$”开头。

​ 标识符其他部分可以是字母、下划线“_”、美元符号“$”和数字的任意组合。

​ Java标识符大小写敏感,且长度不限。

​ 标识符不可以是java的关键字。

​ 表示类名的标识符,每个单词首字母需大写。

​ 表示方法和变量的标识符,第一个单词需小写,第二个单词开始首字母大写,这是“驼峰原则”。

​ (Java并不采用通常语言使用的ASCII字符集,而是采用unicode标准的国际字符集,因此这里所说的字母不仅仅是英文,还包括汉字等等,但不建议使用汉字来定义标识符。)

1.13、java关键字保留字

在这里插入图片描述

1.14、变量的本质

​ 变量本质上代表的是一个“可操作的存储空间”,空间位置是确定的,但是里面放置的数值不确定。我们可通过变量名来访问“对应的存储空间”,从而操纵这个“存储空间”存储的值。(类似停车位)

​ Java是一种强类型语言,每个变量必须声明其数据类型,变量的数据类型决定了变量占据存储空间的大小。

​ 变量三大要素分别为:变量名、变量数据类型、作用域。

1.15、变量的分类

1.15.1、局部变量(方法变量,生命周期最短)

​ 方法或语句块内部定义的变量。生命周期是从声明位置开始到到方法或语句块执行完毕。(注意:该变量需初始化数值,否则会报错。)

1.15.2、成员变量(对象变量,生命周期稍长)

​ 方法外部、内的内部定义的变量。从属于对象,生命周期伴随对象始终。若没有初始化,会自动初始化该类型的默认初始值。

在这里插入图片描述

1.15.3、静态变量(类变量,生命周期最长)

​ 使用static定义。从属于类,生命周期伴随类始终,从类加载到卸载。

1.16、常量

​ 利用关键字final定义一个常量,常量一旦初始化后不能更改其数值。

在这里插入图片描述

1.17、基本数据类型介绍

在这里插入图片描述

​ 引用数据类型用于引用对象,占用储存空间为4个字节。

1.17.1、整型常量_变量

​ 整型用于表示没有小数部分的数值,可以是负数。

在这里插入图片描述
在这里插入图片描述

1.17.2、浮点型变量_BigDecimal的使用

​ 带小数的数据在java中成为浮点型。

在这里插入图片描述
在这里插入图片描述

​ (使用精确点浮点运行,推荐使用:BigDecimal)

1.17.3、字符类型_转义字符

​ 字符型在内存中占据2个字节,使用单引号表示字符常量。

在这里插入图片描述
在这里插入图片描述

​ (String类型实际为字符序列。)

1.17.4、布尔型_if语句使用要点

​ boolean类型有两个常量值,true和false,在内存中占一位(不是一个字节),不可以使用0或者非0的整数替代true或false,这点与C语言不同。boolean类型一般用来判断逻辑条件,一般用于程序的流程控制。

在这里插入图片描述

1.18、运算符介绍

​ 计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操作变量。

在这里插入图片描述

1.18.1、算术运算符(二元、自增、自减)

整数运算:
如果两个数值有一个为Long类型,则最后结果也为Long类型。
没有Long类型时,结果为int类型。即使数值全为short、byte,结果都还是为int类型。

浮点运算:
如果两个数值有一个为double类型,则结果为double类型。
只有两个数值都为float类型时,结果才为float类型。

取模运算(取余运算):
其数值可以为浮点数,一般使用整数,结果为“余数”,该“余数”符号与左边的数值符号相同。如:7%3=1;-7%3=-1;7%-3。

一元运算(++、–):
因该类运算符只需一个操作数,故被称为一元运算。

实例代码:

int a = 3int b1 = a++;		//执行完后,b1=3.先给b1赋值,a在自增。
System,out.println("a="+a+"\nb1="+b);
a = 3;
b2 = ++a;		//执行完后,b2=4,a先自增,再给b2赋值。
System.out.println("a="+a+"\nb2="+c)

1.18.2、赋值及其扩展赋值运算符

在这里插入图片描述

​ 该类运算符都是先运算“=”的右边,然后再根据“=”的左边进行运算。

1.18.3、关系运算符

在这里插入图片描述

注意事项:

​ “=”是赋值运算符,而真正判断两个操作数是否相等的运算符为“==”。

​ “==”、“!=”是所有(基本与引用)数据类型都可以使用。

​ “>”、“>=”、“<”、“<=”仅针对数值类型(byte、short、int、long、float、double以及char)

1.18.4、逻辑运算符_短路运算详解

含义运算符说明
逻辑“与”&两个操作数逻辑结果为true,结果才为true,否则都是false
逻辑“或”\只要两个操作数中,有一个操作数逻辑结果是true,结果就都是true
逻辑“非”!取相反的逻辑结果,!false = true;!true = false
逻辑“异或”^两个操作数的逻辑结果相同,结果为false,反之不同,则结果为true
短路“与”&&只要两个操作数中有一个为false,则直接返回false
短路“或”\ \只要两个操作数中有一个为true,则直接返回true

​ “短路与”和“短路或”采用短路的方式,从左到右计算、如果只通过运算符左边的操作数就能够确定该逻辑表示式的值,则不会继续计算运算符右边的操作数,提高效率。

1.18.5、位运算符_字符串连接符

​ 位运算指的是进行二进制的运算。

在这里插入图片描述

​ “+”运算符两侧的操作数中,只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接。

雷区:

​ “&”和“|”既是逻辑运算符也是位运算符,如果两侧的操作数是boolean类型,就作为逻辑运算符,如果两侧操作数是整数类型,就是位运算符。

​ 不要将“^”当做数学运算的“乘方”,他是“位的异或”操作。

1.18.6、条件运算符

语法格式:

X  ?  Y  :  Z

​ 其中X为boolean类型的表达式,先计算X的值,若为true,则整个运算的结果为表达式Y的值,否则,整个运算结果为表达式Z的值。

测试实例:

int score = 80;
int x = -100;
String type = score < 60 ? "不及格" : "及格";
int flag = x > 0 ? 1 : (x == 0 ? 0 : -1);
System.out.println("type="+type);
System.out.println("flag="+flag);

1.18.7、运算符优先级

优先级运算符结合性
1()括号运算符由左至右
2!、+、-一元运算符由左至右
2~位逻辑运算符由右至左
2++、–递增、递减运算符由右至左
3*、/、%算术运算符由左至右
4+、-算术运算符由左至右
5<<、>>位左移、位右移运算符由左至右
6>=、>、<、<=关系运算符由左至右
7==、!=关系运算符由左至右
8&位运算符、逻辑运算符由左至右
9^位运算符、逻辑运算符由左至右
10|位运算符、逻辑运算符由左至右
11&&逻辑运算符由左至右
12||逻辑运算符由左至右
13? :条件运算符由右至左
14=、+=、-=、*=、/=、%=赋值运算符、扩展运算符由右至左

注意点:

​ 逻辑与、逻辑或、逻辑非的优先级为:逻辑非>逻辑与>逻辑或。例如:a||b&&c的运算结果是a||(b&&c),而不是(a||b&&c)。

1.18.8、数据类型转换

自动类型转换:

​ 自动类型转换指的是容量小的数据类型可以自动转换为容量大的数据类型。

在这里插入图片描述

	实线代表无数据丢失的自动类型转换,虚线表示数据在转换时,可能会有精度的损失。

强制类型转换:

​ 强制类型转换,又称造型,用于显式的转换一个数值的类型,在有可能丢失信息的情况下,进行的转换是通过造型来完成的,但可能造成精度降低或溢出。

语法格式:

(type)var

​ 运算符“()”中的type表示将值var想要转换成的目标数据类型。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值