GY-Java入门

Java入门

是一门编程语言。属于高级语言。后端开发(服务端开发 web开发)

编程语言分类:

  1. 机器语言: 指令 0 1
  2. 汇编语言:指令和命令行
  3. 高级语言: C C++ java python

我们学习java,干什么?----> 编写程序(写代码),开发软件。 (一个软件里面包含很多程序的)

软件分类:

    1. 系统软件:windows  Linux  Mac  (C)
    2. 应用软件: 基于pc端(J基于浏览器: 京东  淘宝 )   基于手机端: app 

1. Java入门

sun公司研发的。 C+±- Oracle

1995 jdk1.0

jdk1.6: 老项目 6-7%

jdk1.7:老项目 6-7%

jdk1.8: 35+% (学习使用)

jdk1.11: 20_% LTS long time server 一直在维护

2020 jdk15 这些版本都是属于过渡的版本。

结合java语言开发程序: jdk java development kit java开发工具包(编写程序)

1.1 三大版本

java语言的4个版本:

  1. javaSE: java 标准版 第一阶段的内容: javaFX+swing PC桌面应用程序(过时)

  2. javaEE:java企业版 2+3阶段技术: web端开发(前端html js +css +后端(tomcat +jsp+servlet))

  3. javaME:java微型版 安卓+嵌入式

  4. javaCard:java卡片 sim卡

1.2 语言优势

相对于其它编程语言而言:(c++):

  1. 简洁 简单 易上手

  2. 面向对象: 封装 继承 多态

  3. 健壮性 : 异常机制 + GC : 垃圾回收的守护线程 (内存溢出)

  4. 分布式: 利用jdk提供的api(应用程序接口)调用其它应用的接口。 URL URLConnection Socket

  5. 多线程: Thread jvm支持多线程

  6. 跨平台: java语言跨平台 (系统)

  7. 动态性: 反射

  8. java语言既不属于编译型 又不属于解释型。 利用编程语言编写程序: 运行特征(先编译后解释)

    C C++ 编译型语言。 自动编译 直接执行 (二进制的文件的)

​ html 解释型语言 需要浏览器解释运行

1.3 术语解释

jdk: 编写代码(java程序  java)
jre: 程序的运行在虚拟计算机里面执行的,虚拟计算机里面所有的文件属于二进制的。
	 手动编译java文件(程序)  运行编译之后的文件(字节码文件  class)
     java runtime environment  java运行环境  (程序运行)
jvm: java  virtual machine  java虚拟机(加载二进制的文件,肯定编译之后的文件)
     java程序的真正的运行时在jvm (jvm只加载class文件)
程序的运行在计算机里面执行的,计算机里面所有的文件属于二进制的。
文本文件:(乱码)
符编码格式(字符集):  UFT-8  gbk  latin  unicode

1.4入门案例

本机是否提供jdk环境: dos命令检测。win+r cmd —> java

1. 安装开发环境  jdk  
    https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
2. 配置运行环境
   2.1 在path: jdk的bin目录  C:\Program Files\Java\jdk1.8.0_261\bin
   2.2 后面学习中: 手动开启服务器tomcat  
       必须依赖JAVA_HOME: jdk的根目录 C:\Program Files\Java\jdk1.8.0_261
       在path: jdk的bin目录 %JAVA_HOME%\bin 
3. 编写代码(普通文本编辑器)
      ***.java (文件名: 大写驼峰 HelloWorld.java)
4.运行程序
   4.1 找到java文件的所在文件
   4.2 手动编译源文件 把java文件编译出来class文件  javac java文件  
   	   javac  HelloWorld.java
   4.3 jvm加载class文件   java class文件名称  java HelloWorld
演示:cmd中运行结果
C:\Users\DELL\Desktop>javac HelloWorld.java
C:\Users\DELL\Desktop>java HelloWorld
第一天学习java
12345
public class HelloWorld{
	//单行注释: 解释说明 
	//类名: 规范: 类名必须与文件名一致 类名:大写驼峰
	//任何注释都是不参与编译的。
	//程序执行入口: 程序运行在jvm里面(只认识main)
	public static void main(String[] str){
		//程序运行的逻辑
		//简单打印(jdk提供的api)
		System.out.println("第一天学习java");//结束
		System.out.println(12345);
	}
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wzAWdOwk-1603610527265)(pic\jdk.png)]

1.5 注释

1.单行注释   //
2.多行注释  /* */
3.文档注释(解释类  解释方法)
   /**
   *@className: HelloWorld
   *@descrption:
   *@author: 张三
   *@date: 2020-01-01 12:00:00
   *@version:0.1
   *@since: jdk1.8
   */

1.6 IDE

集成开发环境: IDEA 70+% (社区版  最终版(收费))
            Eclipse 20+% (开源  免费的)
            MyEclipse  
1.6.1 更改字体大小

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZYcq0n8H-1603610527267)(pic\font .png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TiXM9G2z-1603610527269)(pic\src .png)]

package:1.区分重名的java文件
     2.分层。 MVC+三层  com.javas.dao
    
   包名全部小写: 公司域名的后缀名+公司名称+项目名称+木块名+其它  com/cn/org/edu.javasm.demo.*
1.6.2 修改文档注释模板

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VnWIg0Aj-1603610527272)(pic\TEMPLATE.png)]

1.6.3 更改字符编码格式

统一字符编码格式。 有可能会产生乱码。 UTF-8

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m9prlH3v-1603610527273)(pic\encoding .png)]

1.6.4 更改大小写敏感

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t1mr0F4C-1603610527275)(pic\code .png)]

1.6.5 更改注释颜色

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o7Lr26YX-1603610527276)(pic\color.png)]

1.6.7 创建项目

一个项目就是一个新的窗口。

在学习期间,推荐一个窗口有多个项目(module)—>一个project多个module

2.数据类型

2.1 引用数据类型

包括(类,接口,枚举类,注解)

String  字符串
string+基本类型:  字面量数据类型

2.2 基本数据类型(4类8种)

2.2.1 整数类型
类型 字节 取值范围(二进制) 取值范围(十进制) 默认整数值
byte 1个字节 -27~27 -1 -128~127 0
short(短整型) 2个字节 -215~215-1 -32768~322767 0
int(整型) 4个字节 -231~231-1 -2147483648~2147483647 0
long(长整型) 8个字节 -263~263-1 -9223372036854775808~9223372036854775807 0
2.2.2 小数类型
类型 字节 负数取值范围 正数取值范围 默认值
float(单精度) 4个字节 -3.4E38~-1.4E45 1.4E45~3.4E38 0.0
double(双精度) 8个字节 -1.7E308~-4.9E324 4.9E324~1.7E308 0.0
2.2.3 字符型(单字符)’ ’
类型 字节 取值范围(无符号数) 字符编码 默认值
char 2个字节 0~65535 Unicode字符集(万国码) ''空字符(\u0000)

所占内存: 字符编码格式 GBK: 2个字节 UTF-8: 3个字节

2.2.4 布尔类型
类型 字节 取值范围 默认值
boolean 1个字节 true/false false

2.3 变量

内存里面每个数据的标识。通过变量定义不同类型的数据。

1.全局变量

[访问权限修饰符]  [普通修饰符] 数据类型 变量名称 = 数据;

2.局部变量

[普通修饰符] 数据类型 变量名称 = 数据;
变量名称规范: 小写驼峰 studentName    见名知意    
 //1.定义变量(初始化局部变量)
        String studentName = "张三";
//        int num = 20;
        int studentAge = 20;//默认类型int  -128-127
        char studentGender = '男';
        double studentScore = 80.5;
        boolean isGoodStu = true;

        //1.1 声明变量
        int num;//0.0
        //1.2 赋值
//        num = 20;

        //2.使用局部变量(这个变量必须初始化)
        System.out.println(studentName);
        System.out.println(studentAge);
        System.out.println(studentScore);

        studentAge = studentAge + 1;

2.4 类型转换

基本/引用数据类型(层级) 之间都有可能会出现类型转换。

基本数据类型(数值型+单字符): byte–>short–>char—>int -->long—>float—>double

1.自动类型转换
  前提:
    精度低的转换精度高的类型。
    
        int num = 100;
        double dou = num;

        char ch = 97;//a
        int ch_num = ch;
        System.out.println(dou);
        System.out.println(ch_num);
2.强制类型转换
    前提:精度高的转换精度低的类型。(数据溢出  数据丢失)
//2. 手动强制转换
        double dou1 = 100.65324532;
        // 目标类型 变量 = (目标类型)源类型;
        long lon = (long) dou1;
        System.out.println(lon);

        int num1 = 345;
        byte by1 =(byte) num1;
        System.out.println(by1);

        short s1 =9000;
        short s2 =9000;
        short s3 = (short)(s1+s2);
        System.out.println(s3);

2.5 内存存储

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JEF3FARH-1603610527277)(pic\内存存储 .png)]

3. 运算符

通过变量定义了不同类型的数据 数据与数据肯定要执行相关的运算。

3.1 算术/赋值运算符

1. 算术运算
    +  -  *  /   %模运算 取余数    
    ++  自增+1   -- 自减-1   +拼接(字符串)
        
2. 赋值运算
    =   +=   -=   /=   *=   %=
     
public static void main(String[] args) {
        //算术/赋值运算符
        int num = 10;
        num += 10;// num = num+10;
        System.out.println(num);//20
        num *= 6;//num=num*6;
        System.out.println(num);//120
        num /= 2;
        System.out.println(num);//60
        num -= 100;
        System.out.println(num);//-40
        num %= 3;// num = num%3
        System.out.println(num);//-1
        System.out.println("-----------------------------");
        //++  --
        int a = 20;
        int b = a--;
        System.out.println(a);//19
        System.out.println(b);//20

        b = --a;
        System.out.println(a);//18
        System.out.println(b);//18

        int x = 100;
//        x = ++x;
//        for (int i = 0; i < 100; i++) {
        x = x++;
//        }
        //变量缓存机制
        int temp = x;//100
        x++;
        x = temp;
        System.out.println(x);// 100

        // +

        System.out.println("a"+(100+200+300));//
        System.out.println(100+200+300+"a"+200+100);//

//        System.out.println("用户的余额:"+banlance);
    }

3.2 比较运算符

3. 比较运算符(boolean)
   >   <   >=   <=   !=   == 
  ==: 2个变量参与比较(比较的内存地址值)   
public static void main(String[] args) {
        //比较运算符

        int num = 100;
        short s = 100;

        System.out.println(num==s);//内存地址值  true

        String s1 = "abc";
        String s2 = "abc";

        String s3 = new String("abc");
        System.out.println(s1);
        System.out.println(s2);
        System.out.println(s3);

        System.out.println(s1==s2);//内存地址值
        System.out.println(s2==s3);//false

        // 理论上来说: 数据一样  变量相比较应该true  比较数据  equals(变量)方法
        System.out.println(s2.equals(s3));//比较数据
    }

3.3 逻辑运算符

4.逻辑运算符(boolean)  --->(多个表达式)
  &  &&  逻辑与
  |  || 逻辑或
  !  获得相反结果
  ^  异或
    
//逻辑运算符
System.out.println((5>4)&(5<3));
System.out.println((5>4)&&(5<3));

System.out.println((5<4)&(5>3));// 后面的都会参与运算
System.out.println((5<4)&&(5>3));//&& 第一个表达式false  后面的表达式不执行了  推荐使用

3.4 三元运算符

5. 三元运算符
public static void main(String[] args) {
        //三元运算符(非常推荐)
        // 语法:  数据类型 变量 = (表达式boolean)?表达式1:表达式2;
        // 表达式1/2: 类型尽可能一致(如果不一样  获得精度较高的)
        double result = (5 > 4) ? (100 + 200) : (100.0 * 2);
        System.out.println(result);

        //获得3个整数变量的最值
//        int num1 = 100;
//        int num2 = 10;
//        int num3 = 1000;
        int num1 = 100, num2 = 10, num3 = 1000;
        int max = (num1 > num2) ? num1 : num2;
        max = (max > num3) ? max : num3;

        System.out.println("最大值:" + max);
//        System.out.println("最小值:" + min);

}    

你可能感兴趣的:(java)