初识java——仅作为自己的学习笔记

本文介绍了Java编程中的包管理、包名规则、常量与final的使用、方法的访问修饰符、变量声明、主方法、静态代码块与构造代码块的区别、标识符命名规则、方法重载概念以及递归和栈内存的相关知识。
摘要由CSDN通过智能技术生成

Package:

包就是文件夹,用来管理各种不同功能的java类,方便后期代码维护

包名规则: 公司域名反写+包的作用,需要全部英文小写,见名知意 比如 com.itheima.domain

(全类名 = 包名+类名)

导包——使用其他类时,需要使用全类名 com.itheima.domain.Student ——使用Student类

比如: com.itheima.domain.Student s = new com.itheima.domain.Student();

改进后:import com.itheima.domain.Student;

使用其他类的规则:

(1)使用同一个包中的类时,不需要导包

(2)使用java.lang包中的类时,不需要导包

(3)其他情况都需要导包

如果同时使用两个包中的同名类,需要用全类名com.itheima.domain.Student s = new com.itheima.domain.Student();

常量

常量: 实际开发中,常量一般作为系统的配置信息,方便维护,提高可读性 相当于C语言的#define宏定义

常量命名规范:

(1)单个单词——全部大写

(2)多个单词——全部大写,单词之间用下划线隔开

细节:

(1)若final修饰的变量是-基本数据类型-,那么变量存储的数据值不能发生改变

(2)若final修饰的变量是-引用数据类型-,那么变量存储的地址值不能发生改变,对象内部的可以改变

final——最终的,不可被改变的 可以修饰方法、类、变量

修饰方法:表明该方法是最终方法,不能被重写 public final void show(){}

修饰类: 表明该类是最终类,不能被继承 public final class hello{}

修饰变量:此时的变量叫做常量,只能被赋值一次 final int a = 10; 此时a为常量只能赋值一次,无法被修改,

public static final double PI = 3.1415926535;  //此时PI为常量,无法被更改值.

实际开发中,一般只用privatepublic

成员变量私有:   private

方法公开:   public

特例:如果方法中的代码是抽取其他方法中共性代码,这个方法一般也私有

代码块

1.局部代码块——提前结束变量的生命周期(已淘汰)

2.构造代码块——写在成员位置的代码块(不够灵活,快淘汰)

作用:可以把多个构造方法中重复的代码抽取出来

执行时机:我们在创建本类对象的时候会先执行构造代码块再执行构造方法

3.静态代码块——static

特点:需要通过static关键字修饰,随着类的加载而加载,并且自动触发,只执行一次

使用场景:在类加载的时候,做一些数据初始化的时候使用


//public表示公开的
//class表示定义一个类
//helloworld表示类名
public class HelloWorld {   //表示定义一个公开的类,名称为helloworld,由于是公开的类,所以源文件名必须与类名相同

	//类体部分 不允许直接编写java语句(除声明变量和定义方法)
	
	//static表示静态的
	//void表示空,方法执行结束无返回值
	//main表示方法名是main
	//(String[] args)是一个main方法的形式参数列表
	//String[]是一种引用数据类型  args是一个局部变量的变量名
	//主方法是固定编写,只有args是随意的
	public static void main(String[] args) {    //定义一个公开的静态的主方法(程序入口)
		                                        //args是一个变量名

 /**
  * javadoc注释; 注释里面的内容会被javadoc.exe工具解析并提取生成帮助文档。
  * 
  */

/*
 * public class 和 class 的区别:
 *      一个java源文件中可以定义多个class文件
 *      一个java源文件当中不一定有public class不是必须的
 *      一个class会定义生成一个XXX.class字节码文件
 *      一个java源文件当中定义公开的类的话,public class只能有一个,并且该类名称必须和java源文件名称一致
 *      每一个class当中都可以编写main方法,都可以设定程序的入口,想执行B.class中的main方法:即java B
 *           注意:当在命令窗口执行java hello,那么要求hello.class当中必须有主方法,没有主方法运行错误
 *           
 *           
 * 标识符——凡是有权利自己命名的单词都是标识符 
 *       标识符可以标识的元素有:类名,方法名,变量名,接口名,常量名
 *       
 * 标识符命名规则——合法的标识符只能由数字、字母、下划线、美元符号$组成,不能有其他特殊符号
 *             不能数字开头
 *             严格区分大小写
 *             关键字不能做标识符
 *             理论上无长度限制
 * 标识符命名规范: 类名、接口名——首字母大写,后面每个单词首字母大写
 *             变量名、方法名——首字母小写,后面每个单词首字母大写
 *             常量名——全部大写
 *             
 * 字面值:10/100/true/false/abc/A  都属于字面值
 *       ——整数型字面值
 *       ——浮点型字面值
 *       ——布尔型字面值
 *       ——字符串型字面值
 *       ——字符型字面值
 *       java语言中所有字符串型字面值必须使用双引号括起来(半角)
 *       java语言中所有字符型字面值必须使用单引号括起来(半角)
 * */      

        System.out.print("abc\n");//字符串型字面值
		System.out.print(100);//整数型字面值
		System.out.print(false);//布尔型字面值
		System.out.print(3.14);//浮点型字面值
		System.out.print('A');//字符型字面值
		System.out.print("\n");
 
/*
 * 变量的声明和定义: ——(变量的概念使内存空间得到重复的使用)
 *      数据类型 变量名 = 字面值;
 *      int age = 23;
 *      
 *      访问一个变量包括两种访问形式; 1.读取变量中保存的具体数据 get/获取
 *                           2.修改变量中保存的具体数据 get/设置
 *      变量在一行上可以声明多个:  
 *                  int a,b,c = 100; //a,b未初始化,c赋值为100  报错
 * 
 */
		int a,b,c = 300;
		a=100;
		b=200;
		System.out.print(a);
		System.out.print(b);
		System.out.print(c+"\n");   // 此处+号是连接的意思
	

接收用户键盘输入:

1.创建键盘扫描器对象:

java.util.Scanner s = new java.util.Scanner(System.in);

2.调用Scanner对象的next()方法开始接受用户键盘输入,程序执行到此会停下来等待用户输入,

用户输入时并敲下回车键时,键入的信息会自动赋值给userInputContent变量

String userInputContent = s.next();       //以字符串形式接受

int num = s.nextInt();         //以整型int形式接受数字

3.将内存中数据输出到控制台:

System.out.println("您输入了:"+userInputContent);

方法的定义

语法结构:

          [修饰符列表]    返回值类型    方法名(形式参数列表){

                  方法体;

           };

关于修饰符列表:

1.是可选项,不是必须的

2.目前统一写成:public static

3.方法的修饰符列表当中有static关键字的话,怎么调用此方法:

调用:

类名.方法名实际参数列表);

关于返回值类型:

1.方法结束之后大多数是需要返回最终执行的结果,执行结果可能是一个具体存在的数据,而这个具体存在的数据就是返回值

2.返回值类型:返回值是一个具体存在的数据,数据都是有类型的,此处需要指定返回值的具体类型

3.返回值类型可以是java中任意一种类型,包括基本数据类型和所有的引用数据类型。

4.也可能方法执行结束之后不返回任何数据,返回值类型位置必须编写viod关键字,void表示无返回值;

5.返回值

(1)返回值若不是void,表示这个方法结束之后必须返回一个具体的数值。

(2)若返回值不是void,方法体中必须添加"return 值"语句

(3)返回值类型为void,方法体不能编写"return "语句,但可以编写"return;"语句

(4)只要带有return关键字的语句执行,return语句所在的方法结束

关于方法名:

1.合法标识符

2.最好见名知意

3.最好是动词

4.首字母要求小写,后面每个单词首字母大写

关于形式参数列表(形参):

1.形参是局部变量:

int a; double b; float c; string s;

2.形参的个数可以是0-N个;

3.多个形参之间用逗号","隔开;

4.形参中起决定性作用的是形参的数据类型,形参的名字只是一个标识符

关于实际参数(实参):1.方法调用的时候,实际给这个方法传递的真实数据称为实际参数(实参)

2.实参列表和形参列表必须满足:数量相同,类型对应相同

关于方法执行过程中,内存是如何变化的:

1.方法只定义,不调用,是不会执行的,并且JVM中也不会给该方法分配“运行所属”的内存空间的,只有调用时,才会动态分配所属的内存空间

2.在JVM内存划分上内存有这样三块主要的内存空间:

-方法区内存

-堆内存

-栈内存

3.-方法代码片段属于.class字节码文件的一部分,字节码文件在类加载的时候,将其放到了方法区当中,

所以JVM中的三块主要的内存空间中方法区内存最先有数据,存放了代码片段

代码片段虽然在方法区内存当中只有一份,但是可以被重复调用,每一次调用这个方法的时候,需要给该

方法分配独立的活动场所,在栈内存中分配。{栈内存中分配方法运行的所属内存空间}

4.方法在调用的时候,会给该方法分配内存空间,在栈中分配,此时发生压栈动作,方法执行结束之后,给该方法分配的内存空间全部释放,此时发生弹栈动作。

压栈:给方法分配内存

弹栈:释放该方法的内存空间

5.局部变量在”方法体“中声明,局部变量运行阶段内存在中分配

方法重载overload

关于方法重载overload:参数的类型不同,对应调用的方法不同,此时区分方法不在依靠方法名,依靠参数的数据类型

1.功能相似的时候,尽可能让方法名相同

   功能不同的时候,尽可能让方法名不同

2.满足方法重载条件:

在同一个类当中:

方法名相同;

参数列表不同;

参数数量不同;

参数顺序不同;

参数类型不同;

3.方法重载和什么有关系,和什么没关系

方法重载和方法名+参数列表有关系;

方法重载和返回值类型无关;

方法重载和修饰符列表无关;

//以下三个方法构成了方法重载机制
		public static int summ(int aa,int bb) {
			System.out.println("int");
			return aa+bb;
		}
        public static long summ(long aa,long bb) {
        	System.out.println("long");
			return aa+bb;
		}
        public static double summ(double aa,double bb) {
        	System.out.println("double");
	        return aa+bb;
        }

方法递归:

1.递归必须有结束条件,没有结束条件一定会发生栈内存溢出错误

2.递归即使有结束条件,即使结束条件是正确的,也可能会发生栈内存溢出错误,因为递归的太深。

 public static int sumn(int n) {   //递归算法求1-N的和
        	if(n == 1) {
        		return 1;
        	}
        	return n+sumn(n-1);
        }
        //n + sumn(n-1)
        //4 + sumn(3)
        //4 + 3 + sumn(2)
        //4 + 3 + 2 + sumn(1)
        //4 + 3 + 2 + 1

  • 21
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值