一个菜鸟的JAVA学习心得

JAVA学习心得

Java语言概述

1.平台无关性
平台无关性包括源代码级和目标代码级,C与C++具有一定程度上的源代码级平台无关性,java语言是靠java虚拟机(JVM)在目标代码级实现平台无关性。

2.java程序比较特殊,首先经过编译过程,然后利用解释的方式来执行,即首先要将源程序(.java文件)通过编译器将其转换成与平台无关的字节码文件(.class文件),然后再通过解释器来解释执行字节码文件。
即:

A[源程序(.java文件)] – 编译器转换 --> B[字节码文件(.class)] – 解释器 --> C[解释执行字节码文件]

3.字节码最大的好处就是可跨平台执行,让程序“编写一次,到处运行”的梦想成真。

4.Application和Applet
Application:JAVA应用程序,可以在JAVA平台上独立运行。
Applet:JAVA小程序,内嵌在HTML文件里,要浏览器的支持才能运行。

JAVA语言基础

1.java语言中的两大类数据类型

基本数据类型(primitive types):由程序设计语言系统所定义,不可再分的数据类型,每个基本数据类型的数据所占内存的大小是固定的,与软硬件环境无关。基本数据类型在内存中存放的是 数据值本身
引用数据类型(reference types):在内存中存放的是 指向该数据的地址,不是数据值本身,它往往由 多个基本数据类型组成,因此,对引用数据类型的应用称为 对象引用,也被称为 复合数据类型,在有的程序设计语言中被称为 指针

2.4类8种基本数据类型

·整形:byte,short,int,long
·浮点型:float,double (既有整数部分,又有小数部分的数)
·布尔型:boolea (又称为逻辑型,只有true和false)
·字符型:char (用来储存单个字符)

3.关键字
Java语言中被赋予特定含义的一些单词,不允许用户对关键字赋予其他含义

4.标识符
任何一个变量,常量,方法,对象,类都需要名字,这些名字就是标识符
(1).可以由字母,数字和下划线(_),美元符号($)等组合而成;
(2).必须由字母,下划线或美元符号开头,不能以数字开头;

5.数据类型转换
1.自动类型转换:把占用比特数少的数据(较短的数据)转换成占用比特数较多的数据(较长的数据),都会使用自动类型转换,即类型转换由编译系统自动完成,不需要程序做特别的说明。
2.强制转换类型:如果把较长的数据转换成较短的数据时,就要使用强制类型转换,否则就会产生编译错误。

6.从键盘输入数据
·利用Scanner类从键盘输入多个数据:

import java.util.*;   //加载java.util类库里的所有类
public class main {

	public static void main(String[] args) {
		int num1;
		double num2;
		Scanner reader =new Scanner(System.in);
		System.out.println("请输入第一个数:");
		num1 = reader.nextInt();                 //把读进来的第一个数做为Int类型的数据赋值给num1
		System.out.println("请输入第二个数:");
		num2 = reader.nextDouble();              //把读进来的第二个数做为Double类型的数据赋值给num2
		System.out.println(num1+"*"+num2+"="+((float)num1*num2));
	}

}

·利用Scanner类,使用next()和nextline()方法接收从键盘输入字符串型数据

import java.util.*;   //加载java.util类库里的所有类
public class main {

	public static void main(String[] args) {
			String s1,s2;
		Scanner reader2 = new Scanner(System.in);
		System.out.println("请输入第1个数:");
		s1 = reader2.nextLine();
		System.out.println("请输入第2个数:");
		s2 = reader2.next();				//按Enter键后next()方法将回车符和换行符去掉
		System.out.println("输入的是"+s1+"和"+s2);
	}
}

说明:
next()方法:只能先输入有效字符之后,空格键,Tab,Enter键才能读入。
nextline()方法:可以先输入有效字符,空格,Tab,结束符只有Enter键。

7.条件运算符
·三元条件运算符( ?:): 表达式1 ? 表达式2 :表达式3;
用法:

int a = 1,b = 2,max;
max = a>b ? a:b;		//max获得a,b之中的较大值
System.out.println("Max = "+max);	//输出结果为max=2

8.利用hasNextXXX()和next XXX()方法的配合使用来完成键盘输入

import java.util.*;
public class main {
	public static void main(String[] args) {
		double sum = 0;
		int n = 0;
		System.out.println("请输入多个数,每个数之间用enter或者空格或者tab隔开:");
		System.out.println("请输入一个非数字做为结束操作");
		Scanner reader = new Scanner(System.in);
		while(reader.hasNextDouble())		//判断输入流中是否有双精度浮点类型数据
		{
			Double x = reader.nextDouble();		//读取并转换成double型数据
			sum+=x;
			n++;
		}
		System.out.println("一共输入了"+n+"个数字,"+"其和为"+sum);
	}
}

该程序运行时,用户在键盘上每次输入一个数值都需要按Enter或Tab键或空格键进行确认,最后输入一个非数字字符结束输入操作,因为当输入一个非数字字符并按Enter键后,reader.hasNextDouble()的值为flase。

8.do-while

do
{
	循环体
}
while(条件表达式);

do-while和while的区别主要是两点:一是while循环语句是前判断,循环体有可能一次都不被执行,而do—while循环语句是后判断,循环体至少被执行一次;二是do—while循环的(条件表达式)后必须加一个分号“;”,而while循环的(条件表达式)后面却不能加分号。

9.求1~10的累加和

public class main {

	public static void main(String[] args) {
		int i,n = 10,s = 0;
		for(i = 1;i<n;i++)			//从1-10进行累加求和
		{
			s = s + 1;
		}
		System.out.println("Sum = 1 + ... +"+ n +"="+s);
		s = 0;
		System.out.println("Sum = ");
		for(i = n;i>1;i--)			//从10~2进行累加求和
		{
			s+= i;
			System.out.println(i+"+");//输出数i和"+"
		}
		System.out.println(i + "="+(s+i));	//输出结果
		}
}

执行结果
Sum = 1+…+10=55
Sum = 10+9+8+7+6+5+4+3+2+1 = 55

10.多重循环
求100以内的素数,并输出

public class main {

	public static void main(String[] args) {
		final int MAX = 100;		//定义常量MAX=100
		int j,k,n;
		System.out.println("2~"+MAX+"的所有素数为:");
		System.out.print("2	");		//2是第一个素数,不用测试直接输出
		n=1;						//n累计素数的个数
		k=3;						//k是被测试的数,从最小奇数3开始测试,对所有偶数都不测试
		do							//外层循环,对3~100的素数测试
		{
			j=3;					//用j去除待测试的数
			while(j<Math.sqrt(k)&&(k%j!=0))		//内层循环
				j++;				//若j小于根号k,且j不能整除k,则j加1,再测试去除k
			if(j>Math.sqrt(k))
			{
				System.out.print(k+"\t");
				n++;
				if(n%10==0)
					System.out.println();		//每行输出10个数
			}
			k=k+2;					//测试下一个奇数
		}while(k<MAX);
		System.out.println("\n共有"+n+"个素数");
	}

}

运行结果:
2~100的所有素数为:
2 3 5 7 11 13 17 19 23 29
31 37 41 43 47 53 59 61 67 71
73 79 83 89 97
共有25个素数

说明:Math.sqrt(k)方法返回k的平方根值,do-while外层循环用于遍历3-100的奇数;内层循环while,用于判别k是否为素数,当找到一个3~√k的整数 j 可以除尽 k,则 k 不是素数,退出内循环,此时 j<Math.sqrt(k)。内层循环结束后,如果第17行的 j > Math.sqrt(k)条件成立,说明没有一个 j 可以除尽 k,则 k 是素数。外层循环逐个测试100以内的奇数,从3开始,每次递增值为2,可以减少循环的次数,缩短时间,提高程序效率

11.三种循环转跳语句

break
作用是使程序的流程从switch语句的分支中跳出来,或从循环体内部跳出来,并将控制权交给分支语句或循环语句后面的语句。break语句的格式如下:
break;
break语句多用于两种情况:一是使用switch语句终止某个case,二是使一个循环立即结束。

continue
continue语句必须用在循环结构中,它的格式是:
continue;
continue语句的作用是终止当前这一轮的循环,跳过本轮循环剩余语句,直接进入下一轮循环。在while或者do-while循环中,continue语句会使流程直接跳转至条件表达式;在for语句中,continue语句会跳转至表达式2,计算并修改循环变量后再判断循环条件。

return
return语句用来使程序从方法中返回,并为方法返回一个值。格式如下:
return 表达式; //返回表达式的值
如果return语句未出现在方法中,则执行完方法的最后一条语句后自动返回到主程序。

12.switch语句
注意事项以及一些条件请参照一下这篇文章:
作者:张张吖
switch的结构以及注意事项

数组

1.一维数组
定义:
数据类型[ ] 数组名; //声明一维数组
数组名 = new 数据类型[ 个数 ]; //分配内存给数组
关于new运算符:
利用new运算符为数组元素分配内存空间的方式称为动态内存分配方式
例如:
int [ ] x;
x = new int [10];
合起来:
int [ ] x = new int [10]; //x在这里就是一个应用变量,相当于C语言里的指针

2.利用二维数组计算并输出杨辉三角形


public class main {

	public static void main(String[] args) 
	{
		int i,j;
		int level=7;
		int[][] YH=new int[level][];		//声明7行二维数组,存放杨辉三角形的各数
		System.out.println("杨辉三角形");
		for(i=0;i<YH.length;i++)
			YH[i]=new int [i+1];			//定义二维数组的第i行有i+1列
		YH[0][0]=1;
		for(i=1;i<YH.length;i++)			//计算杨辉三角形
		{
			YH[i][0]=1;
			for(j=1;j<YH[i].length-1;j++)
				YH[i][j]=YH[i-1][j-1]+YH[i-1][j];
			YH[i][YH[i].length-1]=1;
		}
		for(int[] row : YH)		//利用foreach语句显示出杨辉三角形
		{
			for(int col : row)
				System.out.print(col + "  ");
			System.out.println();
		}
	}
}

程序底8行声明了一个7行的二维数组YH,每行的列数由第10行,11行的for循环来定义;第13~19行的for循环利用于计算杨辉三角形并存入数组YH的相应元素中,其中的第15行18行分别是将第i行的第一个元素和最后一个元素置1;第16行定义的内存for循环利用计算第i行的其他元素,其计算方法是第17行的循环体,第20—25行利用了foreach循环将杨辉三角形输出

3.字符串常量和字符常量的区别:
字符常量使用单引号(’)括起来的单个字符,而字符串常量是用双引号(")括起来的字符序列。

创建字符串变量的格式:
String 变量名;
变量名 = new String(“字符串”);
String s; //声明字符串引用s,此时s的值为null
s = new String(“Hello”); //在堆内存中分配空间,并将s指向该字符串的首地址
连起来
String 变量名 = new String(“字符串”);
或者直接利用双引号括起来的字符串直接给新建的String对象赋值,即在声明字符串变量时直接初始化
String 变量名 = “字符串”;
String s = “Hello”;

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值