JAVA学习随笔1

常用的DOS命令

-exit 退出当前DOS命令窗口

-dir 列出当前目录下所有的子文件/子目录

-cd 切换目录

-cd . . 回到上级目录

-cd \ 直接回到根目录

怎么切换盘符:
(盘符名): 回车
e: 回车

JAVA前言

JAVA语言特性

*简单性(屏蔽指针)

*面向对象

*可移植性: JAVA程序可以做到一次编译,到处运行。也就是说JAVA程序可以在windows操作系统上运行,不作任何修改,同样的java程序可以直接放到Linux操作系统上运行,这个被称作为Java程序的可移植性,或者叫做跨平台。

*多线程

*健壮性:和自动垃圾回收机制有关,自动垃圾回收机制简称GC机制。JAVA语言运行过程中产生的垃圾是自动回收的,不需要程序员关心。

*安全性

JAVA的编译阶段

编译阶段主要的任务是检查Java源程序(.java)是否符合Java语法,符合Java语法则能够生成正常的字节码文件(xxx.class文件),不符合Java语法规则则无法生成字节码文件。

字节码文件中不是纯粹的二进制,这种文件无法在操作系统当中直接执行。

编译阶段的过程:

程序员需要在硬盘的某个位置(位置随意)新建一个.java扩展名的文件,该文件被称为Java源文件,源文件当中编写的是Java源代码/源程序。而这个源程序是不能随意编写,必须符合Java语法规则(Java语法规则需要记忆)。

Java程序员需要使用JDK当中自带的javac.exe命令进行Java程序的编译。

javac的使用规则:javac java源文件的路径

javac是一个java编译器工具/命令,在DOS命令窗口中使用。

一个java源文件可以编译生成多个.class文件。

例子
主要是用javac java源文件的路径(绝对路径和相对路径,下面用绝对路径)

未编译前

在这里插入图片描述编译之后生成.class文件,其中绝对路径可以直接从文件夹中拖到DOS窗口中

JAVA的运行阶段

JDK安装之后,除了自带一个javac.exe之外,还有另外一个工具/命令,叫做java.exe
java.exe命令主要负责运行阶段

java.exe在DOS窗口中使用

Java的使用规则

  • java 类名
    例如:
    硬盘上有一个A.class,那么就这样用:java A
    千万要注意:不要写成这样:java A.class【这种方式是错误的】

运行阶段的过程

  • 打开DOS命令窗口(将DOS窗口中的目录切换到xxx.class文件所在目录)
  • 输入:java A
  • java.exe命令会启动Java虚拟机(JVM),JVM会启动类加载器ClassLoader
  • ClassLoader会去硬盘上搜索A.class文件,找到该文件则将该字节码文件装载到JVM当中。
  • JVM将A.class字节码文件解释成二进制1010101010这样的数据。
  • 然后操作系统执行二进制和底层硬件平台进行交互。

在这里插入图片描述 java 类名 要注意的是,先将DOS窗口中的目录切换到xxx.class文件所在目录

JDK 16的安装教程

见网页 https://blog.csdn.net/weixin_43452424/article/details/115283651

JAVA注释

单行注释

// 单行注释,只注释当前行

多行注释

/*
多行注释
多行注释
多行注释

*/

javadoc 注释

/**
*多行注释
*多行注释
*多行注释
*多行注释
*多行注释
*多行注释

*/
该注释是比较专业的注释,注释信息会被javadoc.exe工具解析提取并生成帮助文档。

public class和class的区别

  • 一个java源文件当中可以定义多个class
  • 一个java源文件当中public的class不是必须的
  • 一个class会定义生成一个xxx.class字节码文件
class B
{
	public static void main(String[] args){
		System.out.println("B's main method");
	}
}

class X
{
	public static void main(String[] args){
		System.out.println("X's main method");
	}
}

class Y
{
	public static void main(String[] args){
		System.out.println("Y's main method");
	}
}

class Z
{
	public static void main(String[] args){
		System.out.println("Z's main method");
	}
}

public class k
{
	public static void main(String[] args){
		System.out.println("k's main method");
	}
}

在这里插入图片描述编译阶段
在这里插入图片描述运行后

  • 一个java源文件当中定义公开的类的话,公开的类只能有一个,并且该类的名称必须和java源文件名称一致
  • 每一个class当中都可以编写main方法,都可以设定程序的入口,想执行B.class中的main方法:java B,想执行x.class当中的main方法:java x
  • 注意:当在命令窗口中执行java Hello,那么要求Hello.class当中必须有主方法。没有主方法会出现运行阶段的错误。
class B
{
	/*
	public static void main(String[] args){
		System.out.println("B's main method");
	}
	*/
}

错误提示:
在这里插入图片描述

JAVA基础知识

标识符

1、什么是标识符?

		-在java源程序当中凡是程序员有权利自己命名的单词都是标识符。
		-标识符在EditPlus编辑器当中以黑色字体高亮显示。
		-标识符可以标识什么元素呢?
			* 类名
			* 方法名
			* 变量名
			* 接口名
			* 常量名
			...

	2、标识符的命名规则?【不按照这个规则,编译器会报错】

		* 只能由“数字、字母、下划线_、美元符号$”组成,不能含有其它符号
		* 不能数字开头
		* 严格区分大小写
		* 关键字不能做标识符
		* 理论上无长度限制,但是最好不要太长

	3、标识符的命名规范?【只是一种规范,不属于语法,不遵守规范编译器不会报错】

		* 最好见名知意
			public class UserService{
				public void login(String uaername, String password){
				}
			}

		* 遵守驼峰命名方式
			SystemService
			UserService
			CustomerService

		* 类名、接口名:首字母大写,后面每个单词首字母大写

		* 变量名、方法名:首字母小写,后面每个单词首字母大写

		* 常量名:全部大写
/*
	关于java语言当中的标识符

		1、什么是标识符?

			-在java源程序当中凡是程序员有权利自己命名的单词都是标识符。
			-标识符在EditPlus编辑器当中以黑色字体高亮显示。
			-标识符可以标识什么元素呢?
				* 类名
				* 方法名
				* 变量名
				* 接口名
				* 常量名
				...

		2、标识符的命名规则?【不按照这个规则,编译器会报错】

			* 只能由“数字、字母、下划线_、美元符号$”组成,不能含有其它符号
			* 不能数字开头
			* 严格区分大小写
			* 关键字不能做标识符
			* 理论上无长度限制,但是最好不要太长

		3、标识符的命名规范?【只是一种规范,不属于语法,不遵守规范编译器不会报错】

			* 最好见名知意
				public class UserService{
					public void login(String uaername, String password){
					}
				}

			* 遵守驼峰命名方式
				SystemService
				UserService
				CustomerService

			* 类名、接口名:首字母大写,后面每个单词首字母大写

			* 变量名、方法名:首字母小写,后面每个单词首字母大写

			* 常量名:全部大写
			
*/
 public class IdentifierTest01 //IdentifierTest01是一个类名,名字可以修改
{
	//main是一个方法名
	public static void main(String[] args){ //args是一个变量名
		

	}
 }

关键字

  • 关键字在java语言当中全部小写

    • 关键字在EditPlus工具中颜色是蓝色高亮

    • 常见的关键字有哪些?
      public
      calss
      static
      void
      if
      for
      while
      do
      default
      byte
      short
      int
      long
      float
      double
      boolean
      char
      private
      protected
      switch
      true
      false
      throw
      try
      catch

/*
	* 关键字在java语言当中全部小写

	* 关键字在EditPlus工具中颜色是蓝色高亮

	* 常见的关键字有哪些?
		public
		calss
		static
		void
		if 
		for 
		while
		do
		default
		byte
		short
		int
		long
		float
		double
		boolean
		char
		private
		protected
		switch
		true
		false
		throw
		try
		catch
		....

*/
public class KeyWordsTest01
{
	public static void main(String[] args){
		
	}
}

字面值

  • 字面值:
    - 10、100
    - 3.14
    - “abc”
    - ‘a’
    - true、false
    * 字面值就是数据
    * 字面值是java源程序的组成部分之一,包括标识符和关键字,它们都是java源程序的组成部分
    * 注意:
    java语言当中所有的字符串型字面值必须使用双引号括起来," "
    java语言当中所有的字符型字面值必须使用单引号括起来,’ ’
public class ConstTest01
{
	public static void main(String[] args){
		System.out.println("abc");
		System.out.println("最近你过得还好吗?");
		System.out.println('b');
		System.out.println(10);
		System.out.println(false);
		System.out.println(true);

	}
}

变量

关于java语言当中的变量:

	1、什么是变量?
		* 变量本质上来说是内存中的一块空间,这块空间"有数据类型"、"有名字"、"有字面值"
		* 变量包含三部分:数据类型、名称、字面值【数据】
		* 变量是内存中存储数据的最基本的单元
	
	2、数据类型的作用
		* 不同的数据有不同的类型,不同的数据类型底层会分配不同大小的空间
		* 数据类型是指导程序在运行阶段应该分配多大的内存空间

	3、变量要求:变量中存储的具体的"数据"必须和变量的"数据类型"一致,当不一致的时候编译报错

	4、声明/定义变量的语法格式:
		数据类型 变量名;

	5、变量声明之后怎么赋值?
		语法格式:
			变量名 = 字面值;
		
		要求:字面值的数据类型必须和变量的数据类型一致

		= 等号是一个赋值运算符,赋值运算符先运算等号右边的表达式,表达式
		  执行结束之后的结果赋值给左边的变量

	6、声明和赋值可以放到一起完成
		int i = 10;

	7、变量赋值之后,可以重新赋值,变量的值可以变化
		int i = 10;
		System.out.println(i);   // 10
		i = 20;
		System.out.println(i);  // 20
		i = 100;
		System.out.println(i); //  100

	8、有了变量的概念之后,内存空间得到了重复的使用:
		int i = 10;
		System.out.println(i);
		...
		...
		System.out.println(i);

	9、通常访问一个变量包括两种访问形式:
		* 第一种:读取变量中保存的具体数据  get/读取
		* 第二种:修改变量中保存的具体数据  set/设置

		i = 20;  // set

		System.out.println(i); // get

	10、变量在一行上可以声明多个
		int a,b,c;
	
	11、java中变量必须先声明,在赋值,才能访问
		int i; 程序执行到这里,内存空间并没有
		       开辟出来,变量i并没有初始化。所以没有赋值之前是无法访问的
		       
    12、在方法体当中的java代码,是遵守自上而下的顺序依次执行的,逐行执行
		第一行;
		第二行;
		第三行;
		特点:第二行的代码必须完整的结束之后,第三行程序才能执行

	13、在同一个"作用域"当中,变量名不能重名,但是变量可以重新赋值

    14、什么是作用域?
		变量的作用域,其实描述的就是变量的有效范围
		在什么范围之内是可以被访问的,只要出了这个范围该变量就无法访问了

	15、变量的作用域只要记住一句话:
		出了大括号就不认识了

    16、根据变量声明的位置来分类:
		* 局部变量
			- 在方法体中声明的变量叫做局部变量

		* 成员变量
			- 在方法体外【类体之内】声明的变量叫做成员变量

        在不同的作用域当中,变量名是可以相同的
        在同一个作用域当中,变量名不能重名
public class VarTest01
{
	public static void main(String[] args){
		
		//声明一个int类型的变量,起名i
		int i;
		// 编译报错:变量i并没有初始化
		//System.out.println(i);
		
		//给i变量赋值,i变量在这里完成初始化,内存开辟
		i = 100;
		System.out.println(i);

		//i再次重新赋值
		i = 200;
		System.out.println(i);

		//一行上可以同时声明多个变量
		//a和b尚未初始化,c赋值300
		int a,b,c=300;

		//编译错误
		//System.out.println(a);
		
		//编译错误
		//System.out.println(b);

		System.out.println(c);

		a = 0;
		b = 1;
		System.out.println(a);
		System.out.println(b);


	}
}
public class VarTest02
{
	public static void main(String[] args){
		int i = 100;

		//System.out.println(i); //100

		//i = 200;

		//System.out.println(i); //200

		//以下代码顺序有误,先声明然后赋值再访问
		/*
		System.out.println(k);

		int k = 100;
		*/


		/* 编译阶段生错误
		int i = 90;

		System.out.println(i);
		*/
		
	}
}
public class VarTest03
{
	
	//注意:这里的static不要去掉
	static int k = 90;





	public static void main(String[] args){
		
		//变量i的作用域是main方法
		//在整个main方法当中是有效的,可见的,可以访问的
		int i = 100;


		//以下会编写一个for循环语句
		for(int a = 0; a < 10; a++){//a变量的作用域是整个for循环,for循环结束之后,a变量的内存就释放了
		

		}

		//这里无法访问a变量
		//System.out.println(a);

		
		int j; // 作用域是整个main方法
		for (j = 0; j < 10; j++ ){
		

		}
		System.out.println(j); // 访问的是main方法中的j变量

	}




	public static void doSome(){
		
		//这里无法访问main方法当中的变量i
		//已经出了i变量的作用域
		//System.out.println(i);

		System.out.println(k);
	}
}
public class VarTest03
{
	
	//注意:这里的static不要去掉
	static int k = 90;





	public static void main(String[] args){
		
		//变量i的作用域是main方法
		//在整个main方法当中是有效的,可见的,可以访问的
		int i = 100;


		//以下会编写一个for循环语句
		for(int a = 0; a < 10; a++){//a变量的作用域是整个for循环,for循环结束之后,a变量的内存就释放了
		

		}

		//这里无法访问a变量,编译阶段发生错误
		//System.out.println(a);

		
		int j; // 作用域是整个main方法
		for (j = 0; j < 10; j++ ){
		

		}
		System.out.println(j); // 访问的是main方法中的j变量

	}




	public static void doSome(){
		
		//这里无法访问main方法当中的变量i
		//已经出了i变量的作用域
		//System.out.println(i);

		System.out.println(k);
	}
}
public class VarTest04
{
	
	//成员变量
	int k = 200;

	//主方法:入口
	public static void main(String[] args){
		
	// 局部变量
	int i = 3;

	//java遵循"就近原则"
	System.out.println(i);
	}

	//成员变量
	int i = 100; // 声明变量

	//类体中不能直接编写java语句【除声明变量之外】
	//System.out.println(i);

	//doSome方法
	public static doSome(){
		
		//局部变量
		int i = 90;
	}
}

数据类型

关于java中的数据类型:

	1、数据类型的作用是什么?
		程序当中有很多数据,每一个数据都是有相关类型的,不同数据类型的数据占用空间大小不同。
		数据类型的作用是指导JVM在运行程序的时候给该数据分配多大的内存空间。

	2、java中的数据类型包括两种:

		* 基本数据类型

		* 引用数据类型
			- 类
			- 接口
			- 数组
			...

	3、关于基本数据类型:

		*基本数据类型包括四大类、八小种:
			第一类:整数型
				byte, short, int, long
			第二类:浮点型
				float, double
			第三类:布尔型
				boolean
			第四类:字符型
				char

	4、字符串"abc"不属于基本数据类型,属于"引用数据类型",字符属于基本数据类型:
		* 字符串使用双引号  "abc"
		* 字符使用单引号    'a'

	5、八种基本数据类型各自占用空间大小是多少?

		基本数据类型           占用空间大小【单位:字节】       取值范围
	  --------------------------------------------------------------------
		byte                     1                              [-128-127]
		short                    2                              [-32768-32767]
		int                      4                              [-2147483648-2147483647]
		long                     8

		float                    4
		double                   8

		boolean                  1                              [true,false]

		char                     2                              [0-65535]

    6、字节(Byte):
		1 Byte = 8 bit   [1个字节 = 8个比特位]  1个比特位表示一个二进制位:1/0
		1 KB = 1024 Byte
		1 MB = 1024 KB
		1 GB = 1024 MB
		1 TB = 1024 GB

	7、关于八种基本数据类型的默认值

		数据类型                       默认值
		--------------------------------------
		byte,short,int,long             0
		float,double                    0.0
		boolean                         false
		char                            \u0000

	8、以下java程序主要讲解的是数据类型之:char类型

	9、关于java语言当中的char类型:
		转义字符 \:
			\n  换行符
			\t  制表符
			\\  反斜杠字符
		转义字符出现在特殊字符之前,会将特殊字符转换成普通字符

	10、java语言当中的"整数型字面值"被默认当做int类型来处理。要让
	    这个"整数型字面值"被当做long类型来处理的话,需要将"整数型字面值"
		后面添加l/L,建议使用大写的L

	11、java语言当中的整数型字面值有三种表示方式:
		第一种方式:十进制【是一种缺省默认的方式】常用
		第二种方式:八进制【在编写八进制整数型字面值的时候需要以0开始】
		第三种方式:十六进制【在编写十六进制整数型字面值的时候需要以0x开始】

	12、大容量转换成小容量,需要进行强制类型转换
		强制类型转换需要加"强制类型转换符"  (数据类型)
		加上强制类型转换符之后编译通过了,但是运行阶段可能损失精度
		所以强制类型转换谨慎使用,因为损失精度之后可能损失很严重

	13、在java语言中,所有的浮点型字面值,默认被当做double类型来处理,
		要想该字面值当做float类型来处理,需要在字面值后面添加F/f

	14、在java语言当中boolean类型只有两个值:true,false,没有其他值
		不像在c语言中,0和1可以表示假和真
		在底层存储的时候boolean类型占用一个字节,因为实际存储的时候false底层是0,true底层是1

	15、基本数据类型之间的转换规则:
		1)八种基本数据类型当中除布尔类型之外剩下的7种类型之间都可以互相转换

		2)小容量向大容量转换,称为自动转换,容量从小到大排序:
			byte < short < int < long < float < double
			        char <
			注:
				任何浮点类型不管占用多少个字节,都比整数型容量大
				char和short可表示的种类数量相同,但是char可以取更大的正整数

		3)大容量转换成小容量,叫做强制类型转换,需要加强制类型转换符,程序才能编译通过,但是在
		   运行阶段可能会损失精度,所以要谨慎使用

		4)当整数字面值没有超出byte,short,char的取值范围,可以直接赋值给byte,short,char类型的变量

		5)byte,short,char混合运算的时候,各自先转换成int类型在做运算

		6)多种数据类型混合运算,先转换成容量最大的那种类型再做运算
public class DataTypeTest01
{

	//这里的static必须加
	//static int k = 1000;
	
	//变量还是遵守这个语法:必须先声明,在赋值,才能访问
	//成员变量没有手动赋值之前系统会默认赋值【局部变量不会】
	//static int f;    //成员变量

	public static void main(String[] args){
		
		//普通的n字符
		char c1 = 'n';
		System.out.println(c1);

		char c2 = '\n'; // '\n'是换行符
		System.out.println(c2);

		//System.out.println()和System.out.print()区别:
		// println输出之后换行,print表示输出,但是不换行
		//System.out.print("Hello");
		//System.out.println("World!");
		
		//打印出来是:
		//Hello
		//world
		//System.out.println("Hello \nWorld!");

		//定义一个char类型的变量,起名为c,同时赋值字符'a'
		//char c = 'a';
		//System.out.println(c);
		
		//一个中文占用2个字节,char类型正好是2个字节
		//所以java中的char类型变量可以存储一个中文字符
		//char x = '国'; 
		//System.out.println(x);

		//编译错误
		//ab是字符串不能使用单引号括起来
		//char y = 'ab';

		//"a"是字符串类型
		//k变量是char类型
		//类型不兼容,编译错误
		//char k = "a";

		//声明
		//char e;
		
		//赋值
		//e = 'e';
		//System.out.println(e);

		//再次赋值
		//e = 'f';
		//System.out.println(e);

		/*
		int i;
		System.out.println(i);
		*/

		//System.out.println(k);

		//System.out.println(f); // 0

		//456整数型字面值被当做int类型,占用4个字节
		//x变量在声明的时候是long类型,占用8个字节
		//int类型的字面值456赋值给long类型的变量x,存在类型转换
		//int类型转换成long类型
		//int类型是小容量,long类型是大容量
		//小容量可以自动转换成大容量,称为自动类型转换机制
		long x = 456;
		System.out.println(x);

		//2147483647字面值是int类型,占用4个字节
		//y是long类型,占用8个字节,自动类型转换
		long y = 2147483647;
		System.out.println(y);

		//编译错误:过大的整数:2147483648
		//2147483648被当做int类型4个字节处理,但是这个字面值超出int类型范围
		//long z = 2147483648;
		//System.out.println(z);

		//解决错误
		//2147483648字面值一上来就当做long类型来处理,在字面值后面添加L
		//2147483648L是8个字节的long类型
		//z是long类型变量,以下程序不存在类型转换
		long z = 2147483648L;
		System.out.println(z);	
	}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值