黑马程序员_Java基础_编程基础


1,Java程序是通过编辑器编写的是.java为后缀的文件,通过编译器(javac命令)编译后的文件时.class字节码文件,再由虚拟机执行。.class文件可以跨平台运行,前提是必须在平台上安装Java虚拟机。这也就是Java中常提到的一次编译到处运行。

2,jdk是Java Development Kit的简称,jdk中包括Java开发工具包和运行时环境。在安装jdk时不要将它安装在带空格或者中文命名的路径中。我的安装在C:\Java目录

3,jdk环境变量的配置:(1)win7下右键计算机属性——高级系统设置——环境变量——系统环境变量——新建,java_home变量名,java_home的值是C:\Java\jdk1.7.0_45;(2)在path中编辑,在最前面增加.;%java_home%\bin  。.;代表当前路径。

4,在设置环境变量的时候通常不建议设置固定的classpath环境变量。path的作用是在命令行下执行javac命令时,系统会到path路径寻找是否存在javac.exe命令程序,存在然后就会对java文件进行编译,得到.class文件。运行java命令也是同理。而classpath的作用是当在运行java程序时,需要调用到其他的类文件.class文件,这时候java虚拟机就会到classpath设置的路径中找我们需要的类文件。

5,java中的三种注释:(1)单行注释:// (2)多行注释:/*    */    多行注释要注意不能嵌套的问题  (3)自动生成文档注释 /**     */  。

6,java中的八种基本数据类型:int,byte,short,char,long,float,double,boolean。其他类型都是引用类型,引用类型中的class类型,interface类型,array类型一般统一四个字节记录的是其引用对象的地址。

基本数据类型存储需求和取值范围:

int     4字节     -2147483648 ~ 2147483647
short    2字节     -32768 ~ 32767
long     8字节      -9223372036854775808 ~ 9223372036854775807
byte     1字节       -128 ~ 127
float     4字节       大约(正负)3.40282347E + 38F(有效位6 ~ 7)
double   8字节     大约 (正负)1.79769313486231570E+ 308(有效位数15位)

7,基本数据类型之间的转换,byte,short,char之间不会相互转换,他们先转换成int型在与其他类型相互转换,基本数据类型的向上转型是自动的,一般是小的转换成大的。乡向下转型需要进行强制类型转换,也就是大的转小的。

8,变量(标示符)的命名规则:字母,数字,下划线,$组成,不能以数字开头。(字母还可以是某种语言中代表字母的任何Unicode字符和某种语言中代表数字的任何Unicode字符)。java中有53个标示符或者称为保留字,其中50个为关键字(goto,const尚未使用),3个是值,分别是true,false,null。

9,在java中使用变量必须要对其进行初始化。常量要用final修饰,名称要全部大写。如:final int NUM=9。

10,java中严格区分大小写,如main和Main是不同的。在一个java程序中只允许存在一个public class,可以由多个class,如果一个java程序中存在public class,则该文件必须保存为该public class类名。

11,java中的定义在方法体以外,类体以内的变量是成员变量或字段,作用于整个类当中。不是在类体括号中的变量成为局部变量,局部变量使用必须初始化,因为系统没有默认的初始化值,作用范围是从声明开始到定义它的代码块结束。什么时候定义变量?(1)当数据不确定的时候。(2)需要对数据进行存储时。(3)就定义一个变量来完成存储动作。

12,自增运算符和自减运算符:n++—>n先参与当前运算在加1;n--同理;++n—>n值先加1在参与当前运算;
13,位运算符:&(与),||(或),^(异或),~(非);
">>"和"<<"分别是将二进制数右移或左移;">>>"将0填充到最高位,而">>"是将符号位填充到最高位。位运算符中不存在"<<<"运算符。
注意:对移位操作符右侧参数需要进行摸32运算(除非左边操作数是long类型,需要队右侧数据进行摸64位运算,例如:1<<35与1<<3或8相同)。

14,java中容易出错的运算符:&和&&的区别:&时无论左边是真是假,右边都参与运算。&&时,当左边为假时右边不参与运算,只有左边为真时才判断右边。|与||的区别是:| 时无论真假两边都参与运算,|| 时左边为真,右边不参与运算。^ : 两边相同结果是false。两边不同结果是true。

15,三目运算符:A?X:Y  当A为boolean时,整个表达式的值时X,否则整个表达式的值时Y。三元运算符:好处:可以简化if else代码。弊端:因为是一个运算符,所以运算完必须要有一个结果。

16,转义字符:通过\ 来转变后面字母或者符号的含义。\n:换行。\b:退格。相当于backspace。\r:按下回车键。window系统,回车符是由两个字符来表示\r\n。\t:制表符。相当于tab键。

17,字符串数据和任何数据使用+都是相连接,最终都会变成字符串。最简单的形式:数据类型+""  能够将任意类型转变成字符串类型。

18,构造字符串的两种形式:StringBuilder和StringBuffer。这两个类的api相同,不同之处在于:StringBuilder在单线程中的效率比StringBuffer高,而在多线程中用StringBuffer比较合适,因为StringBuffer是线程安全的。
19,从控制台读取输入:

Scanner in = new Scanner(System.in);
String line = in.readLine();
String word = in.next();
String num = in.readInt();

获取键盘输入的方法二:

BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
String line = buf.readLine();

读取到的是一整行的字符串。关于IO流会在后面总结中。

扩展:在Java6找那个引入了Console累实现从控制台读取密码:

Console cons = System.Console();
String username = cons.readLine();
char[] passWord = cons.readPassword();
20,我们在输出时如果想要输出诸如美元,美分这样的符号时,使用System.out.print()输出可能会出错,这时我们就用到格式化输出:System.out.printf()。它的好处可以通过以下两个例子:
double x = 3333.3333333
System.out.printf("%8.2f",x),输出:3333.33表示用8个字符的宽度和小数点后面的两个字符的精度打印x,也就是打印输出一个空格和7个字符。
21,Java中和C,C++一样,通过条件语句和循环语句确定控制流程。程序流程控制的结构是:顺序结构,分支结构,循环结构,控制循环结构。Java中没有goto语句,但是break语句可以代标签实现跳转,比如从内层循环跳出多重嵌套循环。

while(condition) {
 ....
 break;
 ....
}    跳出这个while循环
read_data;
while(condition1) {
 ....
 while(condition2) {
  ....
  break read_data;
  ....
 }
 ....

}   跳出最外层的while循环,循环终止.
22,跳出循环的另外一种方式是:continue;简单总结一下break和continue的区别在于:break是跳出它所在的这个循环,并且循环结束。而continue的则不同,它是跳出本次循环,循环还将继续。

23,无限循环的最简单形式,面试中可能会考。while(true) { }  或者 for(;;) {} 。
24,Java中还有一个常用的概念就是"块",也就是复合语句是指由一对花括号括起来的若干条简单的Java语句。块确定了变量的作用域;一个块中可以嵌套另一个块。不能在块中声明相同的变量。
25,三大循环的适用场景:
while:事先不需要知道循环执行多少次;
do  while:事先也不知道循环要执行的次数,但是无论条件是否成立,循环都要执行一次。先执行一次,在通过判断条件决定之后的循环;
for:需要知道循环次数;

26,for循环的经典示例:

(1),采用for循环打印:

*
**
***
****
*****

for (int x=0; x<5 ;x++ )
{
	for (int y=0 ; y<=x ; y++ )
	{
		System.out.print("*");
	}
	System.out.println();
}


(2),for循环打印出九九乘法表:

for (int x=1; x<=9 ; x++)
{
	for (int y=1; y<=x; y++)
	{
		System.out.print(y+"*"+x+"="+y*x+"\t");
	}
	System.out.println();
}


(3),采用for循环打印:

*****
****
***
**
*

for (int x=0; x<5 ;x++ )
{
	for (int y=x; y<5 ;y++)
	{
		System.out.print("*");
	}
	System.out.println();
}

(4),for循环打印:

    *
   * *
  * * *
 * * * * 
* * * * * 

for (int x=0; x<5 ;x++ )
{
	for(int y=x+1; y<5 ; y++)
	{
		System.out.print(" ");
	}
	for(int z=0; z<=x ; z++)
	{
		System.out.print("* ");
	}

	System.out.println();
}


27,交换两个变量的常用的三种方式:
交换变量m,n

(1)通过第三方变量

temp = n;
n = m;
m = temp;

(2)不通过第三方变量

n = n + m;

m = n - m;

n = n - m;

(3)通过异或运算符

n = n ^ m;

m = n ^ m;

n = n ^ m;

28,java中的大数值:如果基本的数据类型和浮点精度不能满足需求,那么可以使用java.Math包中的两个类:BigInteger和BigDecimal来处理任意长度数字序列的数值。使用静态的valueOf可以将普通数值转换成大数值。

例如:BigInteger a = BigInteger.valueOf(100);

普通数值的+和*方法对应BigInteger的add和Multiply方法。

示例:黑马基础测试题:

import java.math.BigInteger;

/*
 * 第九题:求1000!的结果中包含多少个0?注:1000! = 1×2×3×4×5×...×999×1000
 * 
 * 分析:首先1000!的值一定是一个基本数据类型无法承受的值,用基本数据类型记录一定会超出范围。所以想到用BigInteger可以承受。
 * BigInteger的加,成运算需要使用add或者multiply方法实现,将整型数转换成BigInteger类型,然后计算1000的阶乘。
 * 得到结果后返回结果的字符串表示形式,遍历每个字符就可以计算出该结果中包含多少个0.
 * 
 */
public class Test9 {

	public static void main(String[] args) {

		//得到1000!的结果的字符串形式
		String str = countResult();
		
		//打印输出结果中的0的个数
		countZero(str);
	}

	//计算1000!的结果,并返回该值的字符串形式
	public static String countResult() {
		
		//将十进制1的字符串表示形式转换成BigInteger,可以实现任意精度的整数运算,result记录计算结果
		BigInteger result = new BigInteger("1");
		for(int i=2;i<=1000;i++) {
			
			//将i的字符串表示形式转换成BigInteger,通过循环与result相乘计算1000!的值
			result = result.multiply(new BigInteger(String.valueOf(i)));
		}
		
		//将结果转换成字符串类型,方便计算结果中0的个数。并返回字符串类型的结果
		String str = result.toString();
		return str;
	}
	
	//计算结果中0的个数
	public static void countZero(String s) {
		
		//定义一个计数器
		int count = 0;
		
		//循环检测字符串的每个字符是否等于'0',如果等于'0',则计数器加一
		for(int i=0;i<s.length();i++) {
			if(s.charAt(i) == '0') 
				count ++;
		}
		//打印结果中0的个数
		System.out.println("1000!结果中0的个数是:" + count);
	}
}

29,java中增强for循环的使用规则:

for(数据类型  变量名:数据集合) {

...

}

示例:

public class Test
{
	public static void main(String[] args) {
		String[] arrs = {"abc","def","ghi","jkl","mon"}; 
		for(String arr : arrs) {
			System.out.println(arr);
		}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值