Java基础知识1

API:Application Program Interface(应用程序接口),包含了为开发Java程序而预定义的类和窗口。

JDK:Java Development ToolKit(Java开发工具包),由一组独立程序构成,每个程序都是从命令行调用,用于编译、运行和测试Java程序。

JRE:Java Runtime Environment(Java运行环境),用于运行Java程序。

IDE:Integrated Development Environment(集成开发环境),为了快速开发Java程序,如Eclipse。

JVM:Java Virtual Machine(Java虚拟机),解释编译后的Java程序。而且,Java虚拟机不是物理机器,是一个解释字节码的程序。
——————————————————————————————————
每个Java程序可以有多个类,但只能有一个public类,并且文件名得和public类的类名相同。
——————————————————————————————————
Java中每行语句以;结束。

Java区分大小写。
——————————————————————————————————
Java源程序保存为.java文件,编译为.class文件,.class文件由Java虚拟机执行。

如果没有编译错误,编译器会生成一个扩展名为.class的字节码文件。编写的Java语言为高级语言,编译后的Java字节码为低级语言,类似于机器指令。
——————————————————————————————————
注释要写的简明扼要,不能没有或者过少,也不能让整个程序都充满注释而使程序很难读懂。
注释:
行注释://…
块注释:/* */
文档注释:/**… */
——————————————————————————————————
Java使用System.out来表示标准输出设备,用System.in来表示标准输入设备
——————————————————————————————————
从控制台输入:

import java.util.Scanner;
public class Test
{
Scanner input=new Scanner(System.in); //System.in为输入流

int iValue=input.nextInt();
double dValue=input.nextDouble();
//变量类型 变量名=input.输入类型();

//常用方法:
//输入short类型:input.nextShort()
//输入long类型:input.nextLong()
//输入float类型:input.nextFloat()
//输入String类型:input.nextLine()
//               input.next()
//输入byte类型:Input.nextByte()

/*next()和nextLine()的区别:读取的时候,需要有分隔符来作为读取结束符号,
next()以默认的空格符来作为结束符,读取到空格时,字符串读取结束。
而nextLine()以换行符作为结束符,读到空格时不结束读取,直到读取到换行符时,字符串读取结束
*/
//从控制台获取字符:String s=input.nextLine()
//char ch=s.charAt(0);
}

以下代码块注意:

Scanner input=new Scanner(System.in);
int intValue=input.nextLine();
String line=input.nextLine();
//输入34,回车,输入567,回车
//得到intValue值为34,line为空的字符串
/*原因:基于标记的读取方法nextInt()读取34,然后在分隔符(行分隔符,及换行符)处停止。
nextLine()会在读取到分隔符(行分隔符)时结束,因为该分隔符前无符号,为所以line为空。

**由于这个原因,不应该在一个基于标记的输入之后使用一个基于行的输入**
*/

——————————————————————————————————

声明明确导入和声明通配符号导入(如下)在性能上是没有什么区别的,
只是不同类中的方法名可能会重复,由于这个原因,尽量使用明确导入

import java.util.*;
 import java.util.Scanner;

——————————————————————————————————
标识符命名规则:

标识符只能由字母,数字,下划( _ )和美元符号( $ )构成,但尽量不用$命名标识符,习惯上,字符 $ 只用在机器自动产生的源代码中。

标识符开头必须以字母,下划线( _ )或美元符( $ )开头,不能以数字开头,尽量用字母开头。

标识符不能是保留字,如true,false,class,等。

标识符可以为任意长度。

标识符命名习惯:

使用小写字母命名变量和方法。例如,变量radius和area。如果一个命名包含多个单词,就将它们连在一起,第一个单词的字母小写,后面的每一个单词的首字母大写。例如,变量numberOfStudents。

类名中的每个单词的首字母大写。例如,Area和ComputeArea。

常量中的所有字母大写,两个单词间用下划线连接,例如,常量PI和常量MAX_VALUE。

命名常量:

final datatype CONSTANTNAME=value;
//final double PI=3.1415926;

——————————————————————————————————
常用类型:

byte  1字节 8位
short 2字节 16位
int 4节 32位
long 8字节 64位
float 4字节 32位
double 8字节 64位

默认情况下,浮点数类型均为double类型,且注意命名规则:
命名一个float类型的数,如12.31,要在尾部加上f,12.31f
命名一个double类型的数,如12.31,要在尾部加上d或者不加d,12.31,12.31d均可
命名一个long类型的数,如1231,要在尾部加上L

——————————————————————————————————
操作符%

a % b,a和b可为正,可为负。但只有当被除数a是负数时余数才是负的。
如:
-7 % 3 = -1
-12 % 4 = 0
-26 % -8 = -2
26 % -8 = 2
26 % 8 = 2

——————————————————————————————————
科学计数法:
1.23456×102可以写成1.23456E+2 1.23456×10^2可以写成1.23456E+2 1.23456×1021.23456E+2
1.23456×10−2可以写成1.23456E−2 1.23456×10^-2可以写成1.23456E-2 1.23456×1021.23456E2
——————————————————————————————————
返回当前时间:

long totalMillis = System.currentTimeMillis();

System类中的方法currentTimeMillis返回从1970年1月1日00::00:00开始到当前时刻的毫秒数。

——————————————————————————————————

Math.random()来获得一个从0到1.0(不包括1.0)的随机double值。

——————————————————————————————————
switch()用法

switch(value)
{
case value1:{...break;}
case value2:{...break;}
case value3:{...break;}
...
case valueN:{...break;}
default:{break;}
}
//其中对value是有要求的,只能是char,String,byte,short,int型值,其他如
long,double,float,即取值范围比int大的都不能用

——————————————————————————————————
常用数学函数:

//角度值:degrees(角度)
//弧度值:radians(数值)
//Math.sin(degrees)
//Math.cos(degrees)
//Math.tan(degrees)
//Math.asin(radians),即arcsin()
//Math.acos(radians)
//Math.atan(radians)
//Math.toRadians(degrees),角化弧
//Math.toDegrees(radians),弧化角
//Math.PI,π
//Math.E,自然数底e
//Math.pow(a,b),a的b次方
//Math.sqrt(x),求x的开方
//Math.exp(x),e的x次方
//Math.log(x),In(x)
//Math.log10(x),lg(x)

//Math.ceil(x),向上取整,返回一个双精度(double)值,如Math.ceil(2.1),返回3.0

//Math.floor(x),向下取整,返回一个双精度(double)值,如Math.ceil(2.1),返回2.0

//Math.rint(x),返回一个与x最接近的整数,为双精度值,如果x与两个整数的距离相等,
返回偶数,如 Math.rint(4.5),返回4.0

//Math.round(x),如果x是float类型,返回一个int值:(int)Math.floor(x+0.5)
如果x是double类型,返回一个long值:(long)Math.floor(x+0.5)

//Math.abs(x),返回x的绝对值

——————————————————————————————————
Unicode和ASCII码:
16位Unicode字符占两个字节,这些字符都可以存储在一个char型变量中,范围从十六进制’\u0000’到’\uFFFF’。
Unicode字符包括ASCII码,范围从’\u0000’到’\u007F’,一共128个字符。

——————————————————————————————————
转义序列:

//Tab键  \t
//换行符 \n
//换页符 \f
//回车符 \r
//双引号 \"

——————————————————————————————————
格式化控制台输出(printf):

System.out.printf(format,item1,item2,...,itemN);

格式化输出举例:
%5c 输出字符并在这个字符条目前加4个空格

%6b 输出布尔值,在false前加一个空格,在true前加2个空格

%5d 输出整数项,宽度至少为5.如果该条目的数字位数小于5,
就在数字前面加空格。如果该条目的位数大于5,则自动增加宽度。

%10.2f 输出浮点数项的宽度至少为10,包括小数点和小数点后两位数字。这样,
给小数点前分配了7位数字。如果该条目小数点前的位数小于7,就在数字前面加空格。
如果该条目小数字前的位数大于7,则自动增加宽度。

%12s 输出的字符串宽度至少为12个字符。如果该字符条目小于12个字符,
就在该字符串条目前加空格。如果该字符串条目多于12个字符,则自动增加宽度。

//附加项:如果要在数字前面添加0而不是空格来凑齐位数,可以在一个数字限定符前面添加0
System.out.printf("%08d %08.1f",1234,5.63)
显示:00001234 000005.6

//默认情况下,输出是右对齐的。可以在格式限定符中方一个减号(-),指定该项在指定域中的
输出是左对齐的。
System.out.printf("%8d%8s%8.1f\n",1234,"Java",5.63);
System.out.print("%-8d%-8s%-8.1f\n",1234,"Java",5.63);
显示(以@代替空格):@@@@1234@@@@Java@@@@@5.6
1234@@@@Java@@@@5.6@@@@@

——————————————————————————————————
数组:
一旦数组被创建,它的大小是固定的。使用一个数组引用变量和下标来访问数组中的元素。

可以使用array.length得到数组的大小。

foreach循环

for(elementType element: array)
{
...
}
如:
int[] myList={1,2,3,4,5};
for(int e:myList)
{
System.out.println(e); //遍历myList数组
}

复制数组arraycopy

System.arraycopy(sourceArray,srcPos,targetArray,tarPos,length);
sourceArray为源数组,srcPos是源数组中开始被复制的起始位置。
targetArray为目标数组,为存储复制的数组,tarPos,为在targetArray中存储的起始位置
length 为复制长度

//例如
               int[] array={1,2,3,4,5,6,7};
		int[] arrayOfCopy=new int[5];
		System.arraycopy(array,0,arrayOfCopy,0,3);
		for(int e:arrayOfCopy)
		{
			System.out.println(e);
		}
		输出 1,2,3,0,0

——————————————————————————————————
Java使用按值传递的方式将实参传递给方法。传递基本数据类型变量的值与传递数组值有很大不同。
对于基本数据类型参数,传递的是实参的值。

对于数组基本类型参数,参数值是数组的引用,给方法传递的是这个引用。从语义上来讲,为传递共享信息,即方法中的数组和传递的数组是一样的。因此,如果改变方法中的数组,将会看到方法外的数组也改变了。
例如:

public static void main(String []args)
	{
		int x=1;
		int[] y=new int[10];
		
		m(x,y);
		System.out.println("x is: "+x);
		System.out.println("y[0] is: "+y[0]);
	}
	public static void m(int number,int[] numbers)
	{
		number=101;
		numbers[0]=1100;
	}
	//显示x is:1
	//y[0] is:1100;

——————————————————————————————————
构造方法必须和所在类的名字相同。

构造方法没有返回值类型,也没有void。
——————————————————————————————————
静态变量、常量和方法:

如果要让一个类的所以示例共享数据,就要使用静态变量,也称为类变量。静态变量将变量值存储在一个公共的内存地址。因为是公共的地址,所以,如果某一个对象修改了静态变量的值,那么同一个类的所有对象都会受影响。

实例方法可以调用实例方法和静态方法,以及访问实例数据域或者静态数据域。静态方法可以调用静态方法和访问静态数据域。然而,静态方法不能调用实例方法或者访问实例数据域,因为静态方法和静态数据域不属于某个特定对象。
——————————————————————————————————
继承关键字:extends
——————————————————————————————————
super:
调用父类的构造方法:super()或super(参数)
调用父类的方法:super.方法名(参数)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值