侧边栏壁纸
博主头像
文怀伟的花生地 博主等级

行动起来,活在当下

  • 累计撰写 5 篇文章
  • 累计创建 4 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Java基础+进阶(一)

文怀伟
2024-11-20 / 0 评论 / 2 点赞 / 138 阅读 / 0 字
温馨提示:
本文最后更新于2024-11-20,若内容或图片失效,请留言反馈。 好看再来哦,明天更精彩

day01开发环境+HelloWorld

1 计算机基础知识

1.1 计算机

计算机(Computer)全称:电子计算机,俗称电脑。是一种能够按照程序运行,自动、高速处理数据的现代化智能电子设备。由硬件和软件所组成,没有安装任何软件的计算机称为裸机。常见的形式有台式计算机、笔记本计算机。按照规模分为微型机、小型机、大型机、巨型机(超级计算机)等。

计算机的应用已渗透到社会的各个领域,正在改变着人们的工作、学习和生活的方式,推动着社会的发展。哪些方面?

1.2 计算机硬件

计算机硬件(Computer Hardware)是指计算机系统中由电子,机械和光电元件等组成的各种物理装置的总称。这些物理装置按系统结构的要求构成一个有机整体为计算机软件运行提供物质基础。

计算机通常由CPU、主板、内存、电源、主机箱、硬盘、显卡、键盘、鼠标,显示器等多个部件组成。

1.3 计算机软件

计算机软件(Computer Software)是使用计算机过程中必不可少的东西,计算机软件可以使计算机按照事先预定好的顺序完成特定的功能,计算机软件按照其功能划分为系统软件应用软件

系统软件: DOS(Disk Operating System), Windows, Linux, Unix, Mac, Android, iOS

应用软件:office  QQ 英雄联盟  王者荣耀

1.4 软件开发

软件:按照特定顺序组织的计算机数据和指令的集合

开发:软件的制作过程

软件开发:借助开发工具与计算机语言制作软件

1.5 计算机语言

语言:人类进行沟通交流的各种表达符号,方便人与人之间进行沟通与信息交换

计算机语言:人与计算机之间进行信息交流沟通的一种特殊语言

计算机语言中也有字符,符号等等。常见的计算机语言如C,C++,C#,JAVA

1.6 人机交互方式

软件的出现实现了人与计算机之间更好的交互。

交互方式

图形化界面:这种方式简单直观,使用者易于接受,容易上手操作。

命令行方式:需要有一个控制台,输入特定的指令,让计算机完成一些操作。较为麻烦,需要记录住一些命令。

1.7 键盘功能键及快捷键介绍

Tab Shift    Ctrl   Alt 空格    Enter Window 上下左右 PrtSc(PrintScreen)屏幕截图

Ctrl+A 全选 Ctrl+C 复制 Ctrl+V 粘贴 Ctrl+X 剪切 Ctrl+Z 撤销 Ctrl+Y反撤销 Ctrl+S 保存…

1.8 常用的DOS命令

Window+R,cmd 进入DOS窗口,默认是在c盘下,可以切换盘符。

e:    切换盘符,进入e盘 dir 列出当前目录下的目录和文件 cd java 进入java目录 cd .. 退到上层目录

cd . 访问当前目录 cd / 退到根目录 cls : (clear screen)清屏 exit : 退出dos命令行

2  Java语言概述

2.1 Java语言发展史

詹姆斯·高斯林(James Gosling)1977年获得了加拿大卡尔加里大     学计算机科学学士学位,1983年获得了美国卡内基梅隆大学计算机科学博士学位,毕业后到IBM 工作,设计IBM第一代工作站NeWS系统,但不受重视。

后转至Sun公司(Stanford university  network),1990年,与Patrick,Naughton和Mike Sheridan等人合作“绿色计划”,后来发展一套语言叫做“Oak”,后改名为Java。

Java Development Kit

1.0  -  1.1   -   1.2  -   1.3   -   1.4   -  1.5

5.0   -   6.0   -   7.0   -   8.0…..

 Sun公司于1995年推出

1991年sun公司James Gosling等人开始开发Oak语言

1994年,将Oak语言更名为Java

1996年获得第一笔投资1亿元

1998年提出jdk1.2,更名为java2

之后推出jdk1.3  jdk1.4

2005年更名为jdk5.0,进行了大幅的版本改进

2006年sun公司宣布将Java作为免费软件对外发布

2007年3月起,全世界所有的开发人员均可对Java源代码进行修改

2007年推出jdk6.0

2009年4月Oracle以74亿美元收购了sun公司

2011年7月由Oracle正式发布jdk7

2014年3月正式发布了java8

 

2.2 Java语言平台版本

J2SE(Java 2 Platform Standard Edition)标准版

是为开发普通桌面和商务应用程序提供的解决方案,该技术体系是其他两者的基础,可以完成一些桌面应用程序的开发。

J2ME(Java 2 Platform Micro Edition)小型版

是为开发移动设备和嵌入式设备(电器、机器人、机顶盒…)提供的解决方案。

J2EE(Java 2 Platform Enterprise Edition)企业版

是为开发企业环境下的应用程序提供的一套解决方案,该技术体系中包含的技术如 Servlet、Jsp等,主要针对于Web应用程序开发。

2.3 Java语言特点

简单性             高性能

编译性             解释性

面向对象         分布式处理      

健壮性             安全性

开源         跨平台

 

什么是跨平台性?

     通过Java语言编写的应用程序在不同的系统平台上都可以运行。

原理是什么?

只要在需要运行java应用程序的操作系统上,先安装一个Java虚拟机(JVM Java Virtual Machine)即可。由JVM来负责Java程序在该系统中的运行。

因为有了JVM,所以同一个Java程序在三个不同的操作系统中都可以执行。这样就实现了Java程序的跨平台性。也称为Java具有良好的可移植性。

3  JDK

3.1 概述

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心。

它包含了:

1、  JAVA开发工具(jdk\bin)

2、  基础开发库(jdk\jre\lib\rt.jar)

3、  基础开发库的源码(jdk\src.zip)

3.2 下载与安装

通过官方网站获取JDK

http://www.oracle.com

针对不同操作系统,下载不同的JDK版本

识别计算机的操作系统

下载完后进行安装,傻瓜式安装,下一步下一步即可。

注意:

1、 同时安装多个jdk时需要使用指定环境变量来确认使用的是哪个jdk

2、 安装路径不要有中文或者特殊符号如空格等。最好目录统一

3、 我们也提供了绿色解压版,不需要安装直接解压即可

4 Hello World案例

/*
 * 用来定义一个包:定位类(包名+类名)
 * package  -- 用来定义包的关键字
 * com.whw.hello --  包名 --全小写+公司的域名倒着写
 * ; -- java语句的结束符
 * */
package com.whw.hello;
//单行注释
/* 多行注释  */
/*
 * 用来定义一个类
 * public  --  公共的,作为类的修饰符,修饰类的可见范围
 * class  -- 用来定义类的关键字
 * HelloWorld  --  类名 -- 符合驼峰命名法
 * {  代码... }
 */
public class HelloWorld {
    /*
     * 用来定义主函数/主方法:是程序的入口
     * public  -- 公共的,作为方法的修饰符
     * static  -- 静态的,说明方法是静态的
     * void  --  空/无,说明方法的返回值是空的
     * main  --  方法名
     * ()  --  是方法的标识符
     * String[] args  -- 方法的参数
     * { 代码/方法体  }
     */
    public static void main(String[] args) {
       /*
        * 向控制台输出指定数据
        * System  --  要发出系统指令
        * out  -- 向外输出的动作
        * println  -- 打印后换行
        * ()  --  方法的标识符
        * "hello java"  -- 方法的参数,指定要打印的数据
        * ;  -- java语句的结束符
        */
       System.out.print("hello java");
       System.out.println("hello java");
       System.out.println("hello java");
    }
}

扩展

JDK JRE JVM的关系

1、JDK(Java Development Kit)是针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE、Java工具和Java基础类库
2、Java Runtime Environment(JRE)是运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。
3、JVM是Java Virtual Machine(Java虚拟机)的缩写,是整个java实现跨平台的最核心的部分,能够运行以Java语言写作的软件程序。



Day02 数据结构

1 数据类型?

1.1 概念

1.1.1 标识符

可以简单的理解为一个名字。在Java中,我们需要标识代码的很多元素,包括类名、方法、字段、变量、包名等。我们选择的名称就称为标识符,并且遵循以下规则:
A. 标识符可以由字母、数字、下划线(_)、美元符($)组成,但不能包含 @、%、空格等其它特殊字符。
B. 不能以数字开头。
C. 标识符是严格区分大小写的。
D. 标识符的命名最好能反映出其作用,做到见名知意。

1.1.2 关键字

在java语言中已经被赋予特定意义的一些单词。
一共有53个关键字。其中有两个保留字:const和goto。
关键字不能被用作标识符!!

1.1.3 注释

Java代码的解释说明。不影响程序的运行,用于辅助读程。

//  单行注释
/*    多行注释   */
/**     文档注释     */

1.1.4 变量

在JAVA中,有的数据值是不固定的,总在变,我们还需要记录这些值,我们可以把这些值理解为变量。
我们通过三个元素来描述变量:变量类型,变量名以及变量值。
int age=18; //声明int类型的变量并赋值
String tel; //声明String类型的变量
注意:
1、 变量名必须是一个有效的标识符。
2、 变量名不可以使用java关键字
3、 变量名不能重复

1.1.5 常量

在程序运行过程中一致不会改变的量成为常量。

1.2 基本类型(八种)

1.2.1 介绍


1.2.2 练习1:测试最大值最小值

创建工程day02
创建com.whw.basic包
创建Test1_Scope.java
package com.whw.basic;
//这个类用来测试取值范围
public class Test1_Scope {
       public static void main(String[] args) {
              //整型测试 byte short int long
              //定义变量记录最大值 最小值
              //数据类型 数据名  数据值
              byte max = Byte.MAX_VALUE;
              byte min = Byte.MIN_VALUE;
              System.out.println(max);//127
              System.out.println(min);//-128
              
              short smax = Short.MAX_VALUE;
              short smin = Short.MIN_VALUE;
              System.out.println(smax);//32767
              System.out.println(smin);//-32768

              int imax = Integer.MAX_VALUE;
              int imin = Integer.MIN_VALUE;
              System.out.println(imax);//2147483647
              System.out.println(imin);//-2147483648

              long lmax = Long.MAX_VALUE;
              long lmin = Long.MIN_VALUE;
              System.out.println(lmax);//9223372036854775807
              System.out.println(lmin);//-9223372036854775808

              //浮点型 float double
              float fmax = Float.MAX_VALUE;
              float fmin = Float.MIN_VALUE;
              System.out.println(fmax);//3.4028235E38
              System.out.println(fmin);//1.4E-45

              double dmax = Double.MAX_VALUE;
              double dmin = Double.MIN_VALUE;
              System.out.println(dmax);//1.7976931348623157E308
              System.out.println(dmin);//4.9E-324

              //布尔类型boolean
              boolean b = false;
              boolean b2 = true;

              //字符型char
              char c  = 'a';//可以存一个字符
              char c2 = 128;//可以存一个数字
              char c3 = '中';//可以存一个汉字
              System.out.println(c);

              //char类型可以存数字,但是在打印时,会去查ascii码表,把这个数字对应着的字符是什么拿出来使用。
              //ascii码表里只规定过来数字0-127对应着的字符,128-65535默认按照字符?处理
              System.out.println(c2);//?
              System.out.println(c3);
       }
}

1.2.3 练习2:输入个人信息

package com.whw.basic;

/**
 * @author pc
 *这个类用来测试个人信息
 */
public class Test2_Info {
	public static void main(String[] args) {
		String name = "小文";
		//通过 +字符串拼接
		System.out.println("我叫"+name);
		System.out.println("我叫文怀伟");
		
		
		String name1 = "阿文1";
		//怎么通过字符串拼接这个字符串
		System.out.println("我叫"+name1);
		
		String name2 = "阿文2";
		//怎么通过字符串拼接这个字符串
		System.out.println("我叫"+name2);
		String name3 = "蔡徐坤";
		int age = 33;
		System.out.println("我叫"+name3+"今年"+age+"岁");
	}
}

1.2.4 练习3:圆形面积

package com.whw.basic;

import java.util.Scanner;

//这个类用来测试圆的面积
public class Test3_Area {
	public static void main(String[] args) {
		/*
		 * 圆的面积是3.14*r*r
		 * 这个公式的变量就是r,那我们就对这个r进行赋值
//		 */
//		double r = 5.5;
//		System.out.println(3.14*r*r);
		
		//我们也可以定义一变量来存这个圆的 面积的数值
//		double res = 3.14*r*r;
//		System.out.println(res);
		//下面我们进行动态的赋值,对r进行一个动态的输入
		double r = new Scanner(System.in).nextDouble();
		System.out.println(3.14*r*r);
	}
}

1.2.5 练习4:变量交换

接收用户输入的值a和b。
假设a=1,b=2将a和b的值做交换。

package com.whw.basic;

import java.util.Scanner;

//这个类用测试变量的交换
public class Test4_Exchange {
	public static void main(String[] args) {
		/**
		 * 第一遍练习
		 */
		//1.接收用户输入的两个值a,b
		int a = new Scanner(System.in).nextInt();
		int b = new Scanner(System.in).nextInt();
		
		//2.定义另一个变量,交换a,b的值
		int t = a;
		a = b;
		b = t;
		
		//3.打印a.b的值
		System.out.println(a);
		System.out.println(b);
		
		/**
		 * 第二遍练习
		 */
		//接收用户输入的两个值,a,b
		int a2 = new Scanner(System.in).nextInt();
		int b2 = new Scanner(System.in).nextInt();
		
		//定义另一个变量,交换a.b
		int t2 = a2;
		a2 = b2;
		b2 = t2;
		
		//打印两个数的值
		System.out.println(a2);
		System.out.println(b2);
	}
}

1.3 引用类型

2 基本类型的字面值(5条)

2.1 整数字面值是int类型

int a = 9999999;

2.2 byte,short,char三种比int小的整数可以用范围内的值直接赋值

byte b = 127;

byte b2 = 128;//右面128字面值是int类型,已经超出byte取值范围

2.3 浮点数的字面值是double类型

float f = 3.0;//错误,右面的字面值是double类型,左面是float类型,放不下的。

2.4 字面值后缀LFD

long a = 999999999999L;// 999999999999字面值是int类型,但是超出了int取值范围,会报错,解决方案就是加后缀L,从int转成long

float b = 3.0F;//3.0字面值是double类型,加后缀F会变成floa类型

double d = 3D;//3字面值是int类型,加后缀D,会变成double类型

2.5 进制前缀

0x    - 16进制 0x0001

0       -8进制 023

0b   -2进制 0b0101

\u    -char类型,16进制 ,默认值是\u0000

3 基本类型的类型转换

3.1 小到大/隐式转换

//小转大/隐式转换
       byte m = 10;
       long n = m;//小转大,右面的m是小类型,给左面的n大类型赋值,可以直接使用

3.2 大到小/显示转换

//大转小/显示转换
       float x = 9.9F;
       int y = (int)x ;//大转小,右面的x是大类型,给左面的y小类型赋值,不可以直接赋值。需要添加强转的代码(小类型)

4 运算规则(5条)

4.1 计算结果的数据类型,与最大类型一致

System.out.println(3/2);//1,int/int,得到的结果类型还是int

System.out.println(3/2d);//1.5,int/double。得到的结果是double

4.2 byte,short,char三种比int小的整数,运算时会先自动转换成int

byte a = 1;
byte b = 2;
byte c = (byte)(a+b);//a+b会自动提升成int类型,右面得运算结果就是int大类型,给左面的byte小类型赋值,不可以,需要强转。

4.3 整数运算溢出

整数运算,类似于一个钟表,转到最大时,再转会回到最小。

计算:光速运行一年的长度是多少米?3亿m/s

//溢出的现象:因为做了大的整型数据的运算,会超出int取值范围。解决方法:把整数提升成long类型。
       System.out.println(300000000L*60*60*24*365);

4.4 浮点数运算不精确

1-0.8
4.5  浮点数的特殊值
Infinity 无穷大  3.14/0
NaN  not a number   0/0.0

5 运算符

5.1 概述

在这里插入图片描述

通常,我们用0表示false,用1表示true
与:表示并且的关系
单与&: 
       1 & 2  ,结果想要是true,要求1和2都必须是true
双与/短路与&&:
       1 && 2 ,当1是false时,2会被短路,提高程序的效率
或:表示或者的关系
单或|:
       1 | 2,结果想要是true,要求1和2只要有一个为true就可以
双或/短路或||:
       1 || 2,当1是true时,2会被短路,提高程序效率

5.2 练习1:自增自减

package com.whw.basic;

//这个类用来测试自增自减
public class Test5_YunSuanFu {
	public static void main(String[] args) {
		int a = 1;
		System.out.println(a++);//符号在后,先使用再变化
		
		int b = 1;
		System.out.println(++b);//符号在前,先变化再使用
	}
}

5.3 练习2:两个数的最大值

package com.whw.basic;

import java.util.Scanner;

//这个类用来获取两个数中的最大值
public class Test6_Max {
	public static void main(String[] args) {
		//1.接收用户输入的两个整数a,b
		int a = new Scanner(System.in).nextInt();
		int b = new Scanner(System.in).nextInt();
		
		//2.对a.b两个整数进行比较,但是我们不是普通的比较,使用三元运算符进行比较
		int max = a>b ? a:b;
		System.out.println(max);
	}
}

5.4 练习3:平年闰年

package com.whw.basic;

import java.util.Scanner;

//这个是没有优化的代码,优化的代码在Test7_RunNian2
//这个类用来测试平年闰年
public class Test7_RunNian {
	public static void main(String[] args) {
		//1、接收用户输入的年号,判断一下是不是闰年
		int year = new Scanner(System.in).nextInt();
		System.out.println("2000年是闰年");

		String desc = "平年";//这个是一个默认值

		//2、得到年号之后,判断是不是满足闰年的条件
		//if(判断的条件){满足条件的代码}
		//1.能被4整除,但是不能被100整除
		if (year%4==0) {
			if (year%100!=0) {
				desc = "闰年";//修改一个默认值
			}
			//2.能被400整除
		}if(year%400==0) {
			desc = "闰年";
		}
		System.out.println(year+"年是"+desc);
	}
}


2

评论区