Java从入门到放弃系列

学了将近四个月的Java了吧,总要留点什么,不然感觉自己没学过一样。所以,特别的撰写此篇文章来总结一下学习过程中的收获,分享给正在学Java的朋友,希望能对你们有一点帮助。

一、JDK的安装和Java环境变量配置

二、工具介绍

1.JCreator
很久的一款开发工具了,现在也还能用的。对刚入门的新手来说,这个还不错。简单易上手,但是功能不够强大。
关于安装的流程详细请看这里:https://blog.csdn.net/Bertil/article/details/107385842

2.eclipse
这款开发工具算是大多数人所使用的吧,毕竟功能也很强大而且还可以免费安装正版。
关于安装的流程详细请看这里:https://blog.csdn.net/qq_38566465/article/details/79484286

3.IDEA
这个就很nb了,除了前面两个所拥有的基本功能外,还有可以制作前端网页设计等等,功能十分强大,深受广大后端开发者的喜爱。当然了,功能越强大所占内存也会更多,所以使用这个的话前提是要保证自己电脑的CPU承受的住。此外,IDEA的激活也会受到限制,持有校园企业邮箱的学生可以直接激活正版,其他的情况我也不是很清楚了,具体上网搜。
关于安装的流程详细请看这里:https://blog.csdn.net/weixin_43184774/article/details/100578786

工具只是个辅助,能力才是关键。我的Java授课老师曾遇到过有个学生可以用记事本直接打出很长的代码来,这就是强者的境界吧。但前提是要安装好JDK和配置好环境变量,然后才能在字符终端编译和运行程序;其次,基础肯定要很扎实,毕竟没了代码辅助功能。

三、关于API文档下载及其使用方法说明

1.下载
关于下载的流程详细请看这里:https://blog.csdn.net/Bertil/article/details/107335554

2.使用方法说明
此次难以说清,直接上图(资料来源于:Java程序设计基础第六版实验指导书)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、Java基础知识

(一)数据类型
数据类型分为两种:基本数据类型引用数据类型(也称复合数据类型)
1.基本数据类型
整型: byte short int long
浮点型: float double
逻辑型: boolean
字符型:char
2.引用数据类型
包括类、数组、接口等。

关于数据类型的介绍详细请看这里:https://blog.csdn.net/Bertil/article/details/107386628

(二)关键字与标识符
1.关键字
在这里插入图片描述
在这里插入图片描述
2. 标识符及其命名规则
标识符:用来表示变量名、类名、方法名、数组名和文件名的有效字符序列 。

命名规则:
(1)可以由字母、数字、下划线(—)、美元符号($)组合而成。
(2)必须以字母、下划线或美元符号开头,不能以数字开头。
(3)关键字不能当标识符使用。
(4)区分大小写。

编码习惯:类名首字母大写,变量、方法及对象首字母小写。

(三)数据类型转换
一般分为自动转换和强制转换两种。

1.自动类型转换
①转换前的数据类型与转换后的类型兼容。
②转换后的数据类型的表示范围比转换前的类型大。
条件②说明不同类型的数据进行运算时,需先转换为同一类型,然后进行运算。转换从“短”到“长”的优先关系为:
byte→short→char→int→long→float→double
2. 强制类型转换
如果要将较长的数据转换成较短的数据时(不安全),就要进行强制类型转换。强制类型转换的格式如下:
在这里插入图片描述
关于数据类型的转换详细请看这里:https://blog.csdn.net/Bertil/article/details/108176556

(四)键盘输入操作
Scanner是一个专门用于输入操作的类,可以使用该类输入一个对象。

例如:
Scanner reader = new Scanner(System.in);
int a = reader.nextInt();

创建的reader对象可以调用nextInt()方法来读取用户从键盘上输入的int型数据,也可用reader对象调用下列方法,读取用户在键盘上输入的相应类型的数据:
nextByte()
nextDouble()
nextFloat()
nextInt()
nextLong()
nextShort()
next()
nextLine()
此外,reader对象还可以调用nextByte()、nextFloat()、nestDouble()、nextInt()等。

next×××()被调用后,则等待用户在命令行输入数据并按回车键(或空格键、Tab键)确认。
next()和nextLine()方法表示等待用户在键盘上输入一行文本,然后返回一个String类型的数据。

next()和nextLine()区别:
next():一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,它将自动将其去掉,只有在输入有效字符之后,该方法才将其后输入的这些符号视为分隔符。
nextLine():结束符为Enter键,即返回Enter之前的所有字符。

(五)运算符与表达式
在这里插入图片描述
关于运算符与表达式的详细请看这里:https://blog.csdn.net/Bertil/article/details/108297472

(六)三种注释方法
在这里插入图片描述

(七)流程控制
1.顺序、分支、循环三种结构
关于三种结构的详细请看这里:https://blog.csdn.net/Bertil/article/details/108308128

2.循环中的跳转语句
break语句:使程序的流程从一个语句块(switch或循环结构)内跳出。
continue语句:终止当前这一轮(次)的循环,进入下一轮(次)循环。
return语句:用来使程序从方法(函数)中返回,并返回一个值。

五、Java中的类与对象

(一)面向对象和类的定义
1.类(Class)和对象(Object)是面向对象程序设计方法中最核心的概念。

类是对某一类事物的描述(共性),是抽象的、概念上的定义;而对象则是实际存在的属该类事物的具体的个体(个性),因而也称为实例(Instance) 。类描述了对象的属性(静态特征)和对象的行为(动态特征)。而对象(Object)则是类(Class)的一个实例(Instance),是个实实在在的个体。

新手刚学面向对象这块时理解起来可能会有点抽象,但是可以通过做一些简单的类设计基础题来促进理解。面向对象程序设计思想的重点是类的设计,而不是对象的设计。

(二)面向对象的基本特征

1.封装性 : 利用抽象数据类型将数据和基于数据的操作封装在一起,保护数据并隐蔽具体的细节,只保留有限的接口与外界联系。
2.继承性:使特殊类(子类)的对象拥有一般类(父类)的全部属性与方法,同时可以增添自 身的属性和方法。
3.多态性:一个程序中同名的多个不同方法共存的情况。常用重载和覆盖。

(三)定义类的语法
在这里插入图片描述
类的访问控制符只有public; abstract和final相互对立,不能同时应用在一个类的定义中。

下面看一个实例——圆柱体类的定义。

class Cylinder   //定义圆柱体类Cylinder
{
    
    
    double radius;     //声明成员变量radius
    int height;        //声明成员变量height
    double pi=3.14;   //声明数据成员pi并赋初值
    void area( )   //定义成员方法area(),用来计算底面积
      {
    
    
          System.out.println("圆柱底面积="+ pi*radius* radius);
      }
     void volume( )   //定义成员方法volume (),用来计算体积
      {
    
    
         System.out.println("圆柱体体积="+((pi*radius* radius)*height);
      }
}

(四)局部变量和成员变量的区别

1.从语法形式上看,成员变量属于类,而局部变量是方法中定义的变量或方法的参数;成员变量可以被public、private和static等修饰,而局部变量则不能,二者都可以被final修饰。
2.从变量在内存中的存储方式看,成员变量是对象的一部分,对象是存储在堆内存的,局部变量存于栈。
3.从变量在内存中的生存时间上看,成员变量是对象的一部分,它随着对象的创建而存在;局部变量随着方法的调用而产生,随着方法调用的结束而消失。
4.成员变量若没有被赋初值,则自动初始化默认为0(用final修饰的但没有被static修饰的成员变量必须显式赋值);局部变量不会自动赋值,必须显式赋值。

(五)对象的创建和使用
1.创建对象的步骤
声明指向“由类所创建的对象”的变量;
利用new创建新的对象,并指派给前面所声明的变量。

2.对象的使用
通过对象来引用对象成员的格式如下:
对象名.对象成员
如,volu.radius = 2.8; volu.height = 5;
如果引用的是成员方法,只要在成员方法名的圆括号内提供所需参数即可,如果方法不需要参数,则用空括号。如:volu.area()

一个类多个对象,它们的成员变量分配在不同的内存,因此修改某一对象的成员变量时其他不受影响。

(六)在类定义内调用方法
在同一个类的定义里面,某一方法可以直接调用本类的其他方法而不需加对象名。
若要强调是“对象本身的成员”的话,则可以在成员名前加this关键字,即“this.成员名”。此时this即代表调用此成员的对象例如:
在这里插入图片描述
(七)参数的传递方法
1.以变量为参数调用方法
2.以数组作为参数或返回值的方法调用

关于参数传递的详细请看这里:https://blog.csdn.net/Bertil/article/details/108308489

(八)匿名对象
以当一个对象被创建之后,在调用该对象的方法时,也可以不定义对象的引用变量,而直接调用这个对象的方法,这样的对象叫做匿名对象

例如,若将
      Cylinder volu=new Cylinder();
      volu.SetCylinder(2.5, 5,3.14);
     改写为:
      new Cylinder().SetCylinder(2.5, 5,3.14);Cylinder()就是匿名对象。

以使用匿名对象通常有如下两种情况:
1.如果对一个对象只需要进行一次方法调用。
2.将匿名对象做为实参传递给一个方法调用。

:一个程序中有一个getSomeOne()方法要接收一个MyClass类对象作为参数,方法的定义如下:
    public static void getSomeOne (MyClass c)
    {
    
    
        ……
     }
     可以用下面的语句调用这个方法。
                   getSomeOne(new MyClass( ) );

(九)Java异常处理机制
1.异常处理的基本概念
在这里插入图片描述

2.Java异常处理机制
在这里插入图片描述

关于Java异常处理的详细请看这里:https://blog.csdn.net/Bertil/article/details/106402047

六、OJ经典例题实战

(一)对象排序
在这里插入图片描述
在这里插入图片描述

import java.util.*;
public class Main {
    
    
    public static void main(String[] args) {
    
    
    	Scanner sin = new Scanner(System.in);
		int count,weight;
		String name;
		if(sin.hasNextInt())
			count = sin.nextInt();
		else 
		{
    
    
			System.out.println ("error input");
			return;
		}
		if(count <= 0)
		{
    
    
			System.out.println ("error input");
			return;
		}
		Cat[] catArray = new Cat[count];
		for (int i = 0; i<count; i++)
		{
    
    
			name = sin.next();
			if(sin.hasNextInt())
				weight = sin.nextInt();
			else 
			{
    
    
				System.out.println ("error input");
				return;
			}
			catArray[i] = new Cat(name,weight);
		}	
        Cat.printCats(catArray); 
        Arrays.sort(catArray, new CatNameComparator()); 
        Cat.printCats(catArray);
        Arrays.sort(catArray, new CatWeightComparator());   
        Cat.printCats(catArray);
    }
}
class Cat{
    
    
	String name;
	int Weight;
	public Cat(String name,int Weight){
    
    
		this.name = name;
		this.Weight = Weight;
	}
	public static void printCats(Cat[] catArray){
    
    
		for(int i = 0;i < catArray.length;i++){
    
    
			System.out.println ("name="+catArray[i].name+" "+"weight="+catArray[i].Weight);
			
		}
		System.out.println ();
			
	}
}
class CatNameComparator implements Comparator<Cat>{
    
    
	public int compare(Cat c1,Cat c2){
    
    
		return c2.name.compareTo(c1.name);
	}
}
class CatWeightComparator implements Comparator<Cat>{
    
    
	public int compare(Cat c1,Cat c2){
    
    
		return c2.Weight - c1.Weight;
	}	
}

(二)String类中的常用方法
在这里插入图片描述

import java.util.*;
public class Main {
    
    
    public static void main(String[] args) {
    
    
        Scanner reader = new Scanner(System.in);
        String str1 = reader.next();
        String str2 = reader.next();
        if(str1.equals(str2))
        	System.out.println ("true");
        else
        	System.out.println ("false");
        int idx,count=0;
        idx=str1.indexOf(str2);
        while(idx>=0)
        {
    
    
        	idx=str1.indexOf(str2,idx+str2.length());
        	count++;
        }
        System.out.println (count);
        int lastIndex = str1.lastIndexOf(str2);
        System.out.println (lastIndex);
        String newstr1 = str1.toUpperCase();
        System.out.println (newstr1);
        String newstr2 = str2.toLowerCase();
        System.out.println (newstr2);
        int num1=0;
        for(int i=0;i<str1.length();i++)
        {
    
    
        	if(Character.isDigit(str1.charAt(i)))
        	num1++;
        }
        System.out.println (num1);
        int num2=0;
        for(int i=0;i<str2.length();i++)
        {
    
    
        	if(Character.isLetter(str2.charAt(i)))
        	num2++;
        }
        System.out.println (num2);
        System.out.println (str1.replace("abc","cde"));
    }
}

猜你喜欢

转载自blog.csdn.net/Bertil/article/details/107334869