java第一阶段(day01)

课堂笔记编写软件:typora。(是一个md文件,html开发的,用低版本,高版本收费)

一.了解java

1.1 java是什么

是一门高级的计算机编程语言。

计算机编程语言有如下三类:

1.1 机器语言  二进制  0  1 (给计算机看的)  

1.2 汇编语言  一些命令  病毒  

1.3 高级语言 java python  c  c++.....  

1.2 能干啥

做开发:开发软件/开发程序。 未来称呼:软件开发工程师/java开发工程师

软件分类:

1.1 系统软件(一般c开发) 常见的系统:windows  linux  mac

1.2 应用软件 (Java语言都可以开发)      

1. 基于PC端 typora   chrome ...   swing/gui  javaFX      

2. 基于移动端(又分为android/ios)     微信小程序    app   王者荣耀               

3. 基于browser端(浏览器端):   淘宝

1.3 java发展

1995 推出java  也是在C++ 基础之上进行研发  C++--

2009 Oracle jdk1.1  ----  jdk1.17

这17个版本中最常用的版本:(大量使用的是jdk1.8  jdk1.11)  

jdk1.6  jdk1.7  jdk1.8  jdk1.11  jdk1.17   (jdk1.11  jdk1.17都是LTS版本 (long term support,长时间提供支持服务的版本))        

1.4 java开发平台版本

JAVASE: java标准版  java  standard edition   (蕴含着swing语言开发和gui编程以及javaFX) 可开发PC端   JAVAEE: java企业版   java enterprise  edition 可开发移动端/browser端

JAVAME: java微型版   java mirco  edition 用于嵌入式开发/移动端开发

1.5 术语解释

1. JDK  JAVA开发工具包   java devlopment kit     只要想编写java代码  必须使用jdk    

2. JRE  java运行环境    java  runtime  environment     只要程序想要运行   必须在环境下进行执行    

3. JVM  java虚拟机      java virtual machine       程序的真正的运行  是在jvm中运行的----> 只认识class文件(字节码文件)  

1.6 java语言优势

1. 跨平台(一次编译  到处运行) class文件

2. 语法简单  入门容易

3. 面向对象(对象)----> 封装  继承  多态

4. 具有健壮性---->  1.1 GC(垃圾回收)     1.2  异常处理机制

5. 多线程  Thread

6. 分布式  Socket  URL  

7. 安全性    

二.入门案例

想编写Java代码,必须先安装jdk

2.1 下载安装jdk

1.进入Oracle官网--->点击产品--->点击java

2.拉到最下面,点击立即下载

3.拉到下面,选择jdk11,选择.exe

4.下载之后,双击进行安装

5.这里直接安装到了C盘,其他盘也可。

bin目录:存放.dll配置文件和.exe工具。即存放可执行文件,在win里双击可运行的文件。

conf目录:一些配置

jmods目录:11版本中模块的jar包都在该目录(8版本是在lib目录)

lib目录:存储jar文件,也叫类库文件

6.校验本机是否有jdk,从而辅助Java开发

win+r -----> cmd ----> 输入Java,javac都能运行(但jar等命令不能运行,即不是全部可运行)。

(原因:安装jdk11之后 会自动的在系统的环境变量中 path: 加一行内容。)

若删除该行,java和javac不能运行。

(系统环境:右键此电脑,点属性--->点高级系统设置---->点环境变量)

2.2 配置环境

第一种:

在系统的环境变量中 path: 配置jdk的bin目录。(java和javac命令是依靠bin目录下的java.exe和javac.exe执行的。)

编辑

(用户变量只对当前用户有效。系统变量。不管哪个用户都有效,故一般配置系统变量)

(选择新建)

编辑

(点击浏览,找到bin目录)

编辑

最后依次点击确定即可。

效验后没问题。(jar和javadoc也可运行,只要bin目录里存在这些.exe,都可运行)

第二种:(一般开发推荐该方式,后期tomcat依赖JAVA_HOME)

1.1 新建新的变量:  JAVA_HOME=jdk的根目录   C:\Program Files\Java\jdk-11.0.14 编辑

1.2 在系统的环境变量中  path=jdk的bin目录   (动态的获得JAVA_HOME变量的值)  

怎么动态获取?

2.3 HelloWorld.java

1. 在计算机里面编写java文件(可先安装Notepad++) -----java源代码

//单行注释: 类名规范:  1. 大写驼峰  2. 见名知意 3.类名必须与java文件名一致
public class HelloWorld{
    
    //程序的入口(函数/方法/功能)
    //java程序的运行在jvm执行---> 只认识main
    public static void main(String[] abc){
        //编写功能代码
        //简单的打印输出一些数据
        System.out.println(100);
        System.out.println("hello  world");
    }
    
}

2. 运行java程序---> 在jvm里面运行,只加载class文件,故需要先编译(任意一门语言 编写代码 都要编译源代码)

从编译角度分析,编程语言又分为:  

1. 编译型语言(自己可以编译)  C  

2. 解释型语言(在浏览器上进行解释运行  html  js css)

     

java: 两者都不属于,只能手动通过命令编译java代码,编译出class文件。

2.1 编译工作(compile),使用javac指令,后面跟java文件   javac HelloWorld.java

一些doc的简单指令:dir,展示当前路径下的所有一级资源

cd,切换路径。java文件在桌面,故切换到桌面

此时再dir,就会找到该java文件。然后javac HelloWorld.java

显示乱码,win系统只认识GBK。而用Notepad++默认编码格式UTF-8,故将编码格式改成ANSI,等价于GBK。(这是在编码之前可这样做,此时代码已经是UTF-8,故改变编码格式会乱码)

可以如下去做: 先用记事本打开:

然后另存为ANSI:

此时再执行javac HelloWorld.java,桌面会多出HelloWorld.class文件 .class文件可用反编译工具去查看(jd-gui.exe工具)

2.2 运行class文件,使用java指令,后跟class文件名称(不带后缀)   java HelloWorld

2.4 注释

1.单行注释 // 注释不参与编译

2.多行注释 /* */

3.文档注释

文档注释用来解释说明 class/interface/enum/每个方法 ,一般在类以及方法上面,格式如下:
一般在类以及 方法上面    
    
  /**
  *@author:
  *@descrption:
  *@date:
  *@version:
  *@since:
  */

 /**
  *@author: Lisa
  *@descrption: 入门案例
  *@date: 2022-02-09 12:00:00
  *@version: 0.1
  *@since: jdk11
  */
public class HelloWorld{
	//单行注释: 类名规范:  1. 大写驼峰  2. 见名知意 3.类名必须与java文件名一致
	
	//程序的入口(函数/方法/功能)
	//java程序的运行在jvm执行---> 只认识main
	
	/**
	*@descrption:
	*@param abc
	*@param abc
	*@return 
	*@throws
	*/
	public static void main(String[] abc){
		//编写功能代码
		//简单的打印输出一些数据
		/*System.out.println(100);
		System.out.println("hello  world");*/
		
		System.out.println(100);
		System.out.println("hello  world");
	}
	
}

2.5 注意

1.只要修改源代码  都需要重新编译

2.java代码是严格区分大小写的

3. 每一行代码的结束都必须加;

三. IDE

以上用记事本写代码,再使用doc命令去编译和运行,效率极低。

IDE是集成开发环境。

常见的IDE有:IDEA Eclipse MyEclipse、

我们使用IDEA,IDEA不仅仅辅助java开发,也支持HTML,CSS,PHP,Python等

有最终版和社区版两个版本,后面用到的web开发等,必须使用最终版。

双击即可。

启动项目,先选择试用30天,创建项目,SDK是软件开发工具包。

src放源代码

运行程序后,out目录存放编译后的class文件。(class文件里没有注释内容)

3.1 修改idea配置

1.修改主题

黑色主题

白色主题

下载相关主题

2. 修改字体

修改字体

3. 修改注释颜色

多行,文档,单行注释

4. 配置文档注释模板

选择class,再选择includes,开启文档注释,写相关内容。

5. 取消首字母敏感

好处:首字母小写时也会有提示。

6.配置编码格式

idea设置-----编码格式设置_翱翔的小菜鸟的博客-CSDN博客_idea 编码设置

7.安装常用插件

Translation中英文翻译工具

8.忽视某些文件

idea忽略某些文件_星夜小筑的博客-CSDN博客_idea忽略

3.2 创建项目

第一种方式:

每次都是一个新的project  默认就是一个窗口一个project

第二种方式: maven项目聚合

一个窗口里面展示多个项目:  创建一个空project-----> 创建多个module  一个module也是一个项目。

四.数据类型

4.1 引用数据类型

String字符串 类 接口 数组 集合

默认值: null

4.2 基本数据类型

4类8种

1. 整数类型

代表的是一个整数。

byte字节

1个字节 8bit

-128-127

默认值: 0

short 短整型

2 16

-2^15 2^15-1

0

int整型

4 32

-2^31 2^31-1

0

long 长整型

8

-2^63 2^63-1

0L/ 0l

默认int

2. 小数类型

维护钱数据,不能使用float/double,因为小数间运算可能丢数据,不能保证精度。

维护钱数据,应该使用long(钱的分) 或者BigDecimal(不丢失任意精度的小数类型)

内存

取值范围

默认值

float

4

0.0F/0.0f

double

8

0.0 0.0D

默认double

3. 单字符类型

char 2个字节 \u0000-\ufffff 默认值: \U0000

必须使用单引号 'a'

4. 布尔类型

boolean 1bit 值只有2个: true 和 fasle 0 1

默认false

4.3 需求

package: 解决类重名问题。

包名规范: 全部小写,一般是:公司域名后缀名 +公司名称+项目名称+模块+其他。

www.baidu.com来说,com就是公司域名后缀名。 com.baidu.xxx.xxx

com.javasm.xxx 不勾选则层级展示包。

用代码维护一个学生的基本信息。

性别: 男             ----------单字符
姓名: 张三           ----------字符串
学号:10001           ----------字符串或整数
年龄: 18
成绩: 80.5
是否是好学生:  true

/**
 * 维护学生基本信息
 */
public class StudentInfo {
    public static void main(String[] args) {
        System.out.println('男');      //单字符用单引号
        System.out.println("张三");    //字符串用双引号
        System.out.println(1001);
        System.out.println(80.5);
        System.out.println(true);
    }
}

/**
 * 维护学生基本信息
 */
public class StudentInfo {
    public static void main(String[] args) {

        //程序运行期间产生的数据,叫做字面量/常量。
        //一个数据占一块内存,对应有内存地址值(是随机产生的,无法通过该值拿到数据),故应该使用标识维护内存的数据
        System.out.println('男');      //单字符用单引号
        System.out.println("张三");    //字符串用双引号
        System.out.println(1001);
        System.out.println(80.5);
        System.out.println(true);


        //一个标识一个数据,用标识去代表内存地址值(从内存里找数据是通过内存地址值找数据),标识即变量
        //变量: 就是内存里面每个数据的标识
        System.out.println("--------------------------");

        //变量名称: 小写驼峰 目前不能重名 不能使用关键字
        //数据类型  变量名称  =  数据;

        //初始化局部变量(只在main方法有效)
        char gender = '男';            //变量名要见名知义
        String studentName = "张三";
        int studentNo = 10001;
        int age = 18;
        float score = 80.5F;
        boolean flag = true;

        //使用变量(运算,打印等)
        System.out.println(gender);
        System.out.println(studentName);
        System.out.println(studentNo);
        System.out.println(age);
        System.out.println(score);
        System.out.println(flag);

        //运算
        age = age + 1;
        System.out.println(age);
    }
}

4.4 变量

变量: 就是内存里面每个数据的标识. 使用变量定义不同类型的数据。

1. 全局变量

2.局部变量

语法1 :

数据类型 变量名称 = 数据; int num = 100; //初始化一个变量

语法2:

数据类型 变量名称; int num; //声明一个变量

变量名称 = 数据; num = 2; //赋值

3. 注意

string+基本数据类型,又统称为字面量

4.5 数据类型转换

2个相似类型之间发生类型转换。

目前只考虑基本数据类型。-----> 其实就是数值类型之间的转换。

byte short char int long float double,精度从小到大,没有布尔类型

1. 隐式转换(自动转换)

精度低的数据转换成精度高的数据。

2. 强制转换

精度高的数据转换成精度低的数据. 后果: 数据可能会溢出 数据丢失

五. 运算符

使用特定的运算符 实现不同变量之间 不同的数据之间 的相关运算。

5.1 赋值运算符

int age1 = 20; =右边的数据赋值给了 =左边的变量

=

+=

-=

*=

/=(除等)

%=(模等)

赋值

5.2 算术运算符

+

-

*

/

%

++

--

+

加法

取余

自增+1

自减-1

拼接

想使用++ -- 这个变量必须要是一个局部变量。并发/多线程 有问题。

5.3 比较运算符

最后结果: boolean

>

<

>=

<=

==

!=

比较2个变量是否相等

5.4 逻辑运算符

最后结果类型: boolean

&

&&

|

||

^

逻辑与

逻辑与

逻辑或

逻辑或

异或

获得相反结果

5.5 位运算符(了解)

&: 位与 |: 位或 ^: 异或

5.6 三元运算符

语法: 数据类型 变量 = (表达式boolean)?(表达式1):(表达式2);

表达式1和表达式2运算之后的结果类型 必须要一致或者相似。

六.SVN/git

subversion. 版本管理工具。(用于团队开发一个项目的工具),可基于局域网部署

码云 gitee / github,需要联网

七.课后练习

7.1 HelloWorld

//类名规范:1.大写驼峰  2.见名知意 3.类名必须与java文件名一致
public class HelloWorld{
public static void main(String[] args){   //程序的入口(函数/方法/功能)
    System.out.println(100);
    System.out.println("Hello world");
}
}

//compiler编译  comment注释  font字体 author作者 descrption描述 version版本
//live templates 动态模板

7.2 描述手机信息

public class phoneInfo {
    public static void main(String[] args){
        String brand = "小米";
        double weight = 12.4;
        int capacity = 4050;
        int price = 6999;
        double thickness = 5.3;
        
        System.out.println(brand);
        System.out.println(weight);
        System.out.println(capacity);
        System.out.println(price);
        System.out.println(thickness);
    }
}

7.3 使用局部变量定义所有的数据类型

public class DataType {
    public static void main(String[] args){
        //整数类型
        byte by = -100;
        short sh = 100;
        int num = 1000;
        long longNum = 100L;
        
        //小数类型
        float f = 10.0F;
        double d = 10.1111;
        
        //单字符类型
        char c1 = 'a';
        char c2 = '1';
        char c3 = '我';
        char c4 = 97;            //ASCII   a
        char c5 = '\u67d0';      //win系统里的字符映射表    某
        System.out.println(c1);
        System.out.println(c2);
        System.out.println(c3);
        System.out.println(c4);
        System.out.println(c5);
        
        //布尔类型
        boolean flag = true;
        System.out.println(flag);
        
        //引用类型
        String str = "hello";
        String str1 = new String("hello");   //括号里是“hello”
        System.out.println(str);             //hello
        System.out.println(str1);            //hello
    }
}

7.4 数据类型转换

public class DatatypeConverter {
    public static void main(String[] args){
        //自动转换
        int num = 100;
        double douNum = num;
        System.out.println(douNum);   //100.0

        char ch = 'a';                //97
        int num1 = ch;                //a转成ASICC码里的数值97
        System.out.println(num1);     //97
        
        //强制类型转换
        double dou = 10.45678;
        int n = (int)dou;         //变量=(目标类型)原类型
        System.out.println(n);    //10
        
        byte b = (byte) n;        //alt+回车
        System.out.println(b);    
        
        short s1 = 10;
        short s2 = 10;
        short num3 = (short)(s1 + s2);  //整数都默认int,两整数相加还是int,故想要short类型,要强转
        System.out.println(num3);       

    }
}

7.5 运算符

public class Yunsuanfu {
    public static void main(String[] args){
        
        //赋值运算符  算术运算符
        int num1 = 100;
        int num2 = 10;
        System.out.println(num1 + num2);   //110
        System.out.println(num1 - num2);   //90
        System.out.println(num1 * num2);   //1000
        System.out.println(num1 / num2);   //10
        System.out.println(num1 % num2);   //0
        
        int num3 = 10;
        num3 += 10;              //num3 = num3 +10; //20
        num3 -= 10;              //10
        num3 /= 10;              //1
        num3 *= 10;              //10
        num3 %= 3;               //1
        System.out.println(num3);
        
        //++ --
        int a = 10;
        int b = a++;             //先将a的数值赋值给b,a再自增加1
        System.out.println(b);   //b=10
        System.out.println(a);   //a=11
        b = ++a;                 //a先自增加1,再将自增后的结果赋值给b
        System.out.println(b);   //b=12
        System.out.println(a);   //a=12
        
        int x = 100;
        x = ++x;                 //x自增加1,再赋值给x,故x=101
        System.out.println(x);
        
        x = x++;  //x直接赋值给x,故x=101.实际为:temp = x;x++;x = temp;(用到变量缓存)
        System.out.println(x);
        
        String name = "张三";
        int age = 30;
        System.out.println("用户名"+name);   //+是拼接
        System.out.println("年龄"+age);

    }
}

7.6 比较运算符

public class Yunsuanfu1 {
    public static void main(String[] args){
        //局部变量,且是基本数据类型,比较的是数据。占一块栈内存
        int num1 = 100;
        int num2 = 200;
        System.out.println(num1 > num2);      //false
        System.out.println(num1 >= num2);     //false
        System.out.println(num1 < num2);      //true
        System.out.println(num1 <= num2);     //true
        
        //局部变量,且是引用数据类型,比较的是内存地址值,占据两块内存。
        //变量和引用是一个概念,变量名称全部在堆内存
        //对String而言,数据是常量,在常量池(jdk1.8之后)
        String str1 = "hello";
        String str2 = "hello";
        String str3 = new String("hello");    //看到new,内存在堆内存
        System.out.println(str1);
        System.out.println(str2);
        System.out.println(str3);
        System.out.println(str1==str2);    //true
        System.out.println(str1==str3);    //false
        
        //字符串数据比较语法:字符串1.equals(字符串2)
        System.out.println(str1.equals(str3));    //true
    }
}

7.7 逻辑运算符

public class Yunsuanfu2 {
    public static void main(String[] args){
        //逻辑运算符:多个表达式之间运算
        //用户登录:用户名和密码一致
        String trueName = "admin";
        String truePass = "1234";
        boolean flag1 = "admin".equals(trueName);
        boolean flag2 = "123".equals(truePass);
        System.out.println(flag1 && flag2);

        int num1 = 10;
        int num2 = 100;
        //第一个表达式true 不管使用&/&& 后面的表达式都要参与运算
        System.out.println((num1 < num2) & (num1 > num2));
        System.out.println((num1 < num2) && (num1 > num2));

        //第一个表达式false,&&后面就没必要执行,而&还要执行
        //&&:短路与 推荐使用
        //&:表达式全部都要执行
        System.out.println((num1 > num2) && (num1 < num2));
        System.out.println((num1 > num2) && (num1 < num2));
        
        //同上
        System.out.println((num1 > num2) | (num1 < num2));
        System.out.println((num1 > num2) || (num1 < num2));
        
        //^异或,相同则为false
        System.out.println(false ^ true);
        
        //! 非,相反的结果
        System.out.println(!true);
    }
}

7.8 位运算

public class Yunsuanfu3 {
    public static void main(String[] args){
        System.out.println(4 & 7);           //转换成2进制进行位运算,结果为4
        //0100
        //0111
        //0100
        
        System.out.println(4 | 7);          //7
        //0100
        //0111
        //0111
        
        System.out.println(4 ^ 7);          //0011,结果为3
        //0100
        //0111
        //0011
    }

7.9 三元运算符

public class Yunsuanfu4 {
    public static void main(String[] args){
        String result = (4 > 7)?"hello":"helloWorld";          //helloWorld
        System.out.println(result);
        
        //看精度高的数据类型
        int num = (int)((5 < 1)?100:200.234);       //200
        System.out.println(num); 
        
        //求三个数的最值
        int a = 100,b = 200,c = 300;
        int max = (a > b)?a:b;
        max = (max > c)?max:c;
        
        //或者int max = (a > b)?((a > c)?a:c):((b > c)?b:c);
        System.out.println(max);
    }
}


八.作业

8.1求一光年是多少千米 , 光在真空中传播速度299792458 m/s

 public class Homework1 {
    public static void main(String[] args){
    double speed = 299792.458;
    long time = 365*24*60*60;
    double distance = speed*time;
    System.out.println("一光年是多少千米:"+ distance);
}
}

8.2根据天数(46)计算周数和剩余的天数

public class Homework2 {
    public static void main(String[] args){
        int days = 46;
        int week = days/7;
        int leftDay = days%7;
        System.out.println("周数为:"+week);
        System.out.println("剩余天数为:"+ leftDay);
    }
}

8.3已知圆的半径radius= 1.5,求其面积 (Java中π用Math.PI表示)

public class Homework3 {
    public static void main(String[] args){
        double radius = 1.5D;
        //double area = Math.PI*radius*radius;//圆周率用Math.PI表示
        double area = Math.PI*Math.pow(radius,2);//N次方用Math.pow()表示
        System.out.println("面积为:" + area);
    }
}

8.4自己给定5个整数,通过编程求出最大值(使用三元运算符)

public class Homework4 {
    public static void main(String[] args){
        int a = 1,b = 2,c = 3,d = 4,e = 5;
        int max = (a > b)?a:b;
         max = (max > c)?max:c;
         max = (max > d)?max:d;
         max = (max > e)?max:e;
        System.out.println("最大值为:" + max);
    }
}

8.5韩梅梅看中两把价格相同的扇子,想挑选一个扇面较大的扇子购买,请你帮她挑选。 A款折叠扇:展开后角度为134.6°,扇骨长26.5cm 。 B款圆扇:扇柄长12.3cm,扇子总长度36.5cm 。注:圆形面积 = 3.14 * 半径平方 ,扇形面积 = 3.14 * 半径平方 * (度数/360)

public class Homework5 {
    public static  void main(String[] args){
        double areaA = Math.PI*Math.pow(26.5,2)*134.6/360;
        double areaB = Math.pow(36.5-12.3,2)/Math.PI;
        String max = (areaA>areaB)?"A款折叠扇":"B款圆扇";
        System.out.println(max);
    }
}

8.6变量a和b的值互换 例如:int a = 10,b=20;

public class Homework6 {
    public static void main(String[] args){
        int a = 10,b = 20;
        int temp = a;
        a = b;
        b = temp;
        System.out.println(a);
        System.out.println(b);
    }
}

8.7定义一个变量,是一个三位数,求各个位数的和. 如:123,结果是1+2+3=6

public class Homework7 {
    public static void main(String[] args){
        int num = 123;
        int bai = num / 100;
        int shi = num / 10 % 10;
        int ge = num % 10;
        int sum = bai + shi + ge;
        System.out.println(sum);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值