java学习第一天(2023.08.04)

编程

1、编程的概念

编程是编定程序的中文简称,就是让计算机代码解决某个问题,对某个计算体系规定一定的运算方式,使计算体系按照该计算方式运行,并最终得到相应结果的过程。

为了使计算机能够理解人的意图,人类就必须将需解决的问题的思路、方法和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算体系之间交流的过程就是编程。

编程需要依靠编程语言去完成

2、编程语言发展史

  • 第一阶段:二进制语言 ,只有计算机能读懂

                          010101

  • 第二阶段 :汇编语言,计算机能看懂,人类也能看懂

                          0x15

  • 第三阶段: 编程语言,人类读懂,计算机能读懂

                          C、C++、Java、PhP

java

1、Java发展史

  • 1995年Sun公司发布Java1.0版本
  • 1997年发布Java1.1版本
  • 1998年发布Java1.2版本(SUN公司在这个版本把Java技术体系拆分为3个方向,分别是:面向桌面应用开发的J2SE,面向企业级开发的J2EE,面向手机移动终端开发的J2ME)

          J2EE(Java 2 Platform Enterprise Edition ) 分布式开发 例如:网络电子商务等

          J2SE(Java 2 Platform Stand Edition) 嵌入式开发 例如:手机等小型电子设备的软件

          J2ME(Java 2 Platform Micro Edition ) 桌面应用软件 例如: 单机软件

  • 2000年发布Java1.3版本
  • 2002年发布Java1.4版本
  • 2004年发布Java 5版本
  • 2006年发布Java 6版本(sun公司结束了之前的命名方式,启用JavaSE,JavaEE,JavaME的命名方式)
  •  2009年Oracle甲骨文公司74亿美元收购了Sun公司,并于2011年发布Java 7版本
  • 2014年发布Java 8版本
  • 2017年9月发布Java 9版本
  • 2018年3月发布Java 10版本
  • 2018年9月发布Java 11版本

....从9版本开始每隔6月更新一次

2、JDK环境配置

(1)、 配置环境的目的:

想要使用某些软件,必须要给软件配置环境

配置了环境后,在计算机中可以在任意位置去启动想要使用的软件

(2)、JDK环境配置步骤:

此电脑→右键→属性→高级系统设置→环境变量→新建→JAVA_HOME(必须大写),浏览目录,选择安装盘符(目前在C:\Program Files\Java\jdk1.8.0_181)

注意:要根据自己的实际路径配置

java学习第一天(2023.08.04)_第1张图片

此电脑→右键→属性→高级系统设置→环境变量→找到Path,点击编辑新建,编写%JAVA_HOME%\bin    此步是为调用jdk\bin下的javac.exe

java学习第一天(2023.08.04)_第2张图片

进制转换

java学习第一天(2023.08.04)_第3张图片

计算机的存储单位

最小单位:1位 表示一个1或者1个0

1个字节 8位 1111 1111 255

1KB=1024B

1MB=1024KB

1GB=1024MB

1TB=1024GB

命令提示符

查看网络: ping

查看计算机相关信息: ipconfig /all

切换盘符: 盘名:

切换目录: cd 目录名称

启动软件 : 输入应用名称

JDK JRE JVM(三大任务)

java学习第一天(2023.08.04)_第4张图片

JDK:

Java Developement Kit Java开发工具包 ,提供给所有Java开发人员使用的工具包,如果要开发Java程序,必须要安装JDK

JRE:

Java Runtime Environment Java运行时环境,运行Java程序需要的内容,将来如果只要运行一个Java程序,只要有JRE就可以了

JVM:

Java Virtual Machine Java虚拟机 : 所有的Java代码都是由Java虚拟机(JVM)帮助我们运行的

JVM三大任务 :

1,加载 :JVM负责把字节码文件(.class)加载到内存中

2,验证 :JVM对字节码文件进行验证,验证代码是否符合规范

3,执行:验证通过后,将代码执行出来

Java的跨平台

平台,指的是不同的操作系统

跨平台,就是指同一个Java程序,可以在不用的操作系统上运行

跨屏台实现原理:

通过不同操作系统的JVM,完成跨平台的操作

java学习第一天(2023.08.04)_第5张图片

 Java的HelloWorld(记事本、手动编译)

public class HelloWorld{
	public static void main(String[] args){
		System.out.println("HelloWorld!!");
	}
}

1, public 表示一个修饰符,公共的意思,表示任意的位置都可以访问这个类

class 表示类的意思,表示这个Java文件是一个普通的类文件

HelloWorld 表示类的名称,用来标识这个类的,类名一般用大写开头

大括号 :这个类中代码的范围

2,public static void main(String[] args){} :main方法,固定写法,是程序的入口,所有的Java程序启动,都是从这个main开始

3,System.out.println() : 向控制台输出指定的内容,括号里面写什么,就会输出什么

写入汉字的时候编译报错的问题:

格式编译报错,需要修改文件的编码格式

java学习第一天(2023.08.04)_第6张图片

 修改完之后,重新编译

 java学习第一天(2023.08.04)_第7张图片

Java常用命令:java javac

javac :用来编译指定的.java文件

java : 用来运行编译好的类文件

Java中的注释

注释 :对于代码的解释,写给自己活着其他人看的

单行注释: 注释一行内容 ,一般解释一行代码,以 // 开头

多行注释 :注释多行内容,一般做一些说明性的注释 ,写在 /* */ 的范围内

数据类型&变量

变量的定义、变量的命名规则

取名规则:遵循标识符的命名规范

标识符 :标识符指的是Java中,类、方法、变量取名的一些规范名称

规范: 标识符有 数字、字母、下划线、$ 组成,不能以数字开头,不能和关键字同名

举例: 123abc 错误

正确 _abc123 ,abc_123 , $abc

变量名的取名 :

遵循标识符的命名规范的基础上,一般采用 小驼峰式 命名,首字母小写,后面的每个单词的首字母大写

尽量要遵循,望文生义

举例: userName ,productName, productId

类名的取名 :

遵循标识符的命名规范的基础上,采用 大驼峰式 的命名,首字母大写,后面的每个单词的首字母大写

举例 : class User{} class Person{} class Product{}

方法名的取名 :

遵循标识符的命名规范的基础上,一般采用 小驼峰式 命名,首字母小写,后面的每个单词的首字母大写

尽量要遵循,望文生义

举例 : void getUserName(){}

Java的关键字

标识符的名称,不能和关键字同名

Java对大小写敏感,关键字大写是允许作为标识符名的

java学习第一天(2023.08.04)_第8张图片

 常量

常量指的是在程序运行过程中,不会改变的量

分类如下 :

整数常量、 字符串常量、字符常量 、小数常量、布尔常量、空常量

public class DemoVariable01{
    public static void main(String[] args){
        //编写常量
        //整数常量
        System.out.println(10);  
        System.out.println(-10);
        //字符串常量,写在一对双引号中的内容
        System.out.println("hello");
        System.out.println("123");
        //浮点数常量,也就是小数值
        System.out.println(3.14);
        //字符常量,用单引号引起来的内容
        //单引号中,有且仅有一个字符
        System.out.println('a');
        //System.out.println('ab');
        System.out.println('中');
        //布尔常量  true或者flase
        System.out.println(true);
        System.out.println(false);
        //空常量   null,不能直接用来输出打印
        //System.out.println(null);
    }
}

数据类型 : 用来表示Java语言中使用的数据的方式

分类 : 基本数据类型 和 引用数据类型

基本数据类型:

四类八种:

整数类 : byte 、short 、int 、 long

浮点数类 :float 、double

字符类 : char

布尔类 :boolean

java学习第一天(2023.08.04)_第9张图片

Java中的数据类型,首位都表示符号位,所以取值范围都是位数-1之后做计算

浮点数类型转二进制的方式 :以40.375为例

1,先求整数部分 40 的二进制 ==> 0010 1000

2,求小数部分0.375的二进制 ,小数求二进制的方式是, 小数部分 乘 2 ,满1取1,不满1取0

0.375 * 2 = 0.75 => 0

0.75 * 2 = 1.5 => 1

0.5 * 2 = 1 => 1

0.375的二进制结果为 : 011

40.375 组合后的二进制值为 : 0010 1000 . 011

3,小数点左移,左移到最高位的1后面

0010 1000 . 011 ==> 001.0 1000 011

移动的位数+ 127 ==> 5 + 127 = 132 =>

4,计算最终的二进制值

符号位 + 132的二进制(移动后数值的二进制) + 小数点后的二进制 后补0

0 + 1000 0100 + 0 1000 011 0000 0000 0000 0000

5,测试结果

其中ob表示二进制

public static void main(String[] args) {
         int i = 0b01000010001000011000000000000000;
        System.out.println(Float.intBitsToFloat(i));
    }

注意事项:

   1、整数类型,默认是int类型

   2、float类型和int类型的字节相同,位数也相同,但是int的精度更高

   float类型的划分是1个符号位、8个指数位、23个尾数位,它的精度是23位,int就是31位

    3、double类型的划分是1个符号位11个指数52个尾数位,比long类的范围大,精度比long类型低

     4、浮点数类型,默认是double类型

变量

概念:

在程序的运行过程中,可以改变的量,本质是内存中开辟的一块空间

变量的声明:

           语法格式:数据类型   变量名   =  值;

变量声明注意事项:

         1、变量不可重复定义,也就是变量名不能重复,值可以被改变

         2、float类型和long类型变量,后面需要加上后缀,float加f或者F,long类型加L

         3、byte类型和short类型变量声明的时候,它们的值不能超过它们的范围

         4、没有赋值的变量,不能被使用,必须要赋值之后才能被调用

         5、变量的使用,不能超过它的作用域

               作用域:就是变量生效的范围,也就是它所在的那个大括号的范围

变量的其他声明方式:

方式1:

数据类型    变量1,变量2,变量3;

变量1 = 值; 变量2  =  值;变量3 = 值; 

/**
	变量的声明及使用
**/
public class DemoVariable02{
	
	public static void main(String[] args){
		//声明变量
		//声明整数类型
		//语法 :  数据类型   变量名   =  值;
		byte b1 = 100; 
		//byte b2 = 200;   //声明的数值,不能超过数据类型的范围
		System.out.println(b1);
		//System.out.println(b2);
		
		short s1 = 200;
		System.out.println(s1);
		
		//int类型的声明
		//int b1 = 300;  //不可以声明同名的变量
		b1 = 110;
		System.out.println(b1);
		
		int i = 100;
		System.out.println(i);
		
		//long类型
		long l = 1000L;
		System.out.println(l);
		
		//float类型
		float f1 = 3.45F;
		System.out.println(f1);
		
		//double类型
		double  d1 = 2.58;
		System.out.println(d1);
		
		//字符类型
		char ch = 'A';
		System.out.println(ch);
		
		//布尔类型,只有两个值,true或者false
		boolean  b2 = true;
		System.out.println(b2);
		
		//声明变量
		int number01 ;
		number01 = 100;
		System.out.println(number01); //想使用变量必须先赋值
		
		{
			int number02 = 200;
			System.out.println(number02);
		}
		//超过作用域范围,无法调用
		//System.out.println(number02);
		
		//声明多个变量
		int x,y,z;
		x = 100;
		y=200;
		z=300;
		int x1 = 100, y1 = 200,z1 = 300;
		
		System.out.println(x);
		System.out.println(y);
		System.out.println(z);
		System.out.println(x1);
		System.out.println(y1);
		System.out.println(z1);
	}

}

练习:

声明两个变量a,b,  a = 10, b = 20,输出着两个变量,输出内容是: a的值是:XX,   b的值是:xx

然后将a 和 b  的值做交换,再分别输出a和b

public class DemoVariable03{
	
	public static void main(String[] args){
		/*
		声明两个变量 a,b  ,a = 10,b=20 ,输出这两个变量,
		输出内容是 :  a的值是 :xx ,b的值是:xx
		然后将a和b的值做交换,再分别输出a和b  
		*/
		int a = 10;
		int b = 20;
		System.out.println("a的值是:" + a);
		System.out.println("b的值是:" + b);
		//借助一个中间变量
		int c;
		c = a;   //先把a赋值给c
		a = b;   //再把b赋值给a
		b = c;   //再把c赋值给b
		System.out.println("a的值是:" + a);
		System.out.println("b的值是:" + b);
		
	}
}

类型转换(大类型&小类型、int&char的转换)

大类型和小类型:大小类型的区分即是他们的取值范围的大小

byte  short  int  long   float   double 

大小数据类型的转换:

小类型  ->  大类型  :  隐式的数据转换,一定是安全的

大类型  ->  小类型   :   显示的数据类型转换

语法   :     小类型  =  (小类型)大类型值;

public class DemoVariable04{
	
	public static void main(String[] args){
		//隐式的数据类型转换,小类型 -> 大类型
		
		byte b = 100;
		int i = b;
		System.out.println(i);
		
		//小类型向大类型转换的时候,会产生精度丢失问题
		float f1 = 2.58F;
		double d1 = f1; 		// 2.5799999237060547
		System.out.println(d1);
		
		int num = 1234;
		float f2 = num;
		System.out.println(f2);
		
		//byte类型或者short类型,如果做运算,会被提升类型为int,结果需要做强制转换
		byte b1 = 50;
		byte b2 = 50;
		int b3 = b1 + b2;  //byte + byte =>  int + int
		byte b4 = (byte)(b1 + b2);
		System.out.println(b3); 
		System.out.println(b4); 
		
		
		//显示的数据类型转换,  大 -> 小
		
		int num01 = 100;
		byte num02 = (byte)num01;
		System.out.println(num02);
		//大类型的值,转为小类型,需要强制转换,
		//如果超过了小类型的范围,可以转换成功,但是最终的结果会发生改变
		int num03 = 200;
		byte num04 = (byte)num03;
		System.out.println(num04);  //-56

         int i = 200;
        // 1100 1000   int类型的是32位,前面都是0,符号位0表示正数,1表示负数
        //200转为byte类型后,byte只有8位,1100 1000  只被保留8位,第一位就被当做符号位
        //1100 1000 除符号位外,做取反 +1
        //10110111 +1 = 10111000   ==>-56
        System.out.println((byte)i); //-56
		
		double num05 = 2.56;
		float f3 = (float)num05;
		System.out.println(f3);

        int num06 = (int)num05;
		System.out.println(num06); //2
		
		//字符
		char ch01 = 'a';
		System.out.println(ch01 + 1); //98
		
		
		float f4 = (float)2.56;   //通过将double类型 2.56强转为float
		float f5 = 2.56f;   //声明的时候,直接声明为float类型
	}
	
}

你可能感兴趣的:(学习,java)