java知识1----基础

如何学Java

1,基本功扎实-----编程基本功,编程能力;
2,学会查找doc文档,依靠文档而不是依靠人脑记忆;
3,背代码,这是编程最重要的,背会经典的代码套路,背会了才会写程序;
4,积累解决问题的能力;

Java学习路径

java基础程序设计:数据类型、控制语句、数组、方法;
面向对象程序设计:封装、继承、多态、设计模式、异常、包;
Java新特性:泛型、枚举、装箱,拆箱、可变参数、Annotation;
应用程序开发:类集、二叉树、链表、类库、多线程、IO、反射、网络、JDBC/Oracle,MySQL。

java基础程序设计

Java发展概述;
Java开发环境搭建;
简单Java程序;
Java数据类型;
运算符、表达式、语句、判断、循环;
数组的定义及使用、方法的定义及使用、数组的引用传递、Java新特性对数组的支持;

JVM基本原理?:

JVM基本原理也就是Java可移植性特性的实现原理,也就是一个java程序的执行流程、运行过程。
可移植性就是指一个程序可以在多个平台执行,而不改变程序本身,即,一次编程N次运行;
Java是编译解释型语言,编译器会把Hello.java源文件编译成Hello.class中间字节码文件,JVM读取并处理的就是这个经编译过的平台无关的字节码class类文件。
Java编译器javac.exe针对Java虚拟机产送class类文件,因此是独立于平台的;
Java解释器java.exe负责将java虚拟机的代码在特定平台(Linux、Windows、Unix、DOS)上运行。
最后机器执行的都是0101010的机器语言或者叫机器码指令。机器也只认识0101的机器码指令。

总结:
	1,编译器将*.java源文件编译成 *.class字节码文件;
	2,JVM加载*.class 类文件;
	3,解释器解释*.class字节码文件成为机器码,交给操作系统执行。
	(但是准确的说解释器并不会直接把字节码文件解释成机器语言,其实会解释成汇编语言,然后汇编再进一步解释成机器语言)

path、classpath作用?

path的主要作用是设置JDK的可执行命令;
classpath主要在执行的时候起作用, 高速JVM类的保存路径,也就是 *.class文件的保存路径。所以classpath只对java解释命令起作用,对javac编译命令不起任何作用。

class与public class声明的区别?

public class声明的类文件名必须与类名称一致;
class声明的类文件名称可以与类名称不一致;
在一个java文件中只允许有一个public class声明,但是可以有多个class声明;
在一个java文件中允许有多个class类定义,编译后会自动划分不同的class文件;

常量、变量

常量就是定义不可改变的值;
变量是指一块内存区域,可以改内容的一块区域;

标识符命名规则

英文大小写字母、数字、下划线、美元符号组成,但是不能已数字开头;

3种注释

单行、多行、文档注释;

java 数据类型划分

数据类型
基本数据类型 传值
引用数据类型 传递的是内存地址
数值型
整数型 byte 是8位 short 16位 int32位 long 64位
浮点型 float 32位 double 64位 2字节
字符型 char 16位
布尔型 boolean
类 class
接口 interface
数组

数据溢出

通过扩大数据类型来解决。

数据类型之间的转换

自动类型转换、强制类型转换。
任何类型的数据都可以向String转型;

运算符、表达式、语句

java中语句有很多种形式,表达式就是其中一种形式,表达式是由操作数和运算符组成,操作数可以是常量、变量也可以是方法,运算符就是数学中的运算符号;
表达式后面加分号就是语句。

赋值运算符(=)
一元运算符(+、-、!)
算数运算符(+、-、*、/、%)
关系运算符(>、<、>=、<=、==、!=)
自增自减运算符(++、--)
逻辑运算符(&(AND与)、|(OR或)、&&(短路与)、||(短路或))
位运算(
		&(按位与)、
		|(按位或)、
		^(异或--相同为0不同为1)、
		~(取反:负数取反、正数取反 )、
		<<(左移位)、
		>>(右移位)、
		>>>(无符号右移位))

正数取反是负数,负数取反是正数。
正数的原码、反码、补码相同;
补码=反码+1;

正数取反
先将初始数值转换成二进制数,再对二进制数的每一位(包括第一位的符号位)进行运算:即将0变为1、将1变为0。得到的是最终结果的补码,要转换为最终结果的原码则需再次取补码,就能得到计算结果。

【例1】对 5 进行取反。
假设为16位。
5 转换为二进制数 为: 0000 0000 0000 0101得到二进制数
每一位取反: 1111 1111 1111 1010得到最终结果的补码
取补码: 1000 0000 0000 0110得到最终结果的原码
转换为十进制数:-6
正数的原码、反码、补码相同
则 5 取反为 -6 .

负数取反
先将初始数值转换成二进制数,再取得二进制数的补码,之后对补码的每一位(包括第一位的符号位)进行运算:即将0变为1、将1变为0。得到的是最终结果的补码(到达这一步后所得的二进制数为正数,由于正数的原码、反码、补码相同,后面的运算可以忽略,视此步得到的为最终结果的二进制数),要转换为最终结果的原码则需再次取补码,就能得到计算结果。

【例2】对 -5 进行取反。

假设为16位。
-5 转换为二进制数为: 1000 0000 0000 0101得到二进制数
取补码: 1111 1111 1111 1011得到二进制数的补码
每一位取反: 0000 0000 0000 0100 得到最终结果的补码
取补码: 0000 0000 0000 0100得到最终结果的原码
转换为十进制数:4

则 -5 取反为 4 .

简便方法
也可以用适合人类运算的计算方法:
如对 a 按位取反,则得到的结果为 -(a+1) .
此条运算方式对正数负数和零都适用。

程序的结构

  • 顺序结构

  • 选择结构
    if-else 、if-else if-else 、三目运算符、switch

  • 循环结构
    for 、while、do-while、

中断循环:break(退出整个循环)、continue(退出当前这次的循环)

数组与方法

· 数组的定义、作用和使用
空指针nullpointException,数组下标越界ArrayIndexOutOfBoundsException;
· 数组的声明及内存分配
数组的动态初始化、静态初始化;
数组声明:声明数组是在栈内存中声明的,
为数组开辟空间:使用关键字new在堆内存中开辟,
· 多维数组
数组名.length 求出数组长度;
数组的操作,主要控制好其小标即可;
·方法的作用、定义格式
·方法的重载的概念及使用
方法名称相同,但是参数类型和参数个数不同,称为重载。
通过传递参数的个数以及类型的不同以完成不同功能方法的调用。

注意事项:方法的重载一定只是在参数上的类型或者个数不同,不能根据返回值类型来判断;
方法的参数相同,但是返回值类型不同,则根本不是重载,编译都是无法编译过的。

·使用return结束一个方法
·方法的递归调用
方法自己调用自己,必须有明确的结束条件,结束调用。

数组的引用传递

·掌握数组的引用传递
数组作为一个方法的参数,和基本数据类型作为一个方法参数的区别?
·使用方法接收或者返回一个数组
一个方法可以接收一个数组也可以返回一个数组,如果方法接收一个数组的话,则此方法对数组所做的修改将都被保留下来。
内存状态分析。
·java对数组操作的支持

排序:java.util.Arrays.sort(数组引用); //默认是从小到大的排序
数组拷贝:System.arraycopy(原数组名称,原数组开始点,目标数组名称,目标数组开始点,拷贝长度);

数组的引用传递,传递的就是对内存的使用权,可以将一个数组传递到方法之中,传递的时候不需要写[],直接写数组名字即可。
方法中对数组所做的修改,都会被保留下来。

java新特性对数组的支持

jdk1.5之后引入了大量的新特性。
·可变参数
方法中接收的参数不再是固定的,而是随着需要传递的,
可变参数的方法定义格式:返回值类型 方法名称(类型 … 参数名称){}
所有的可变参数接收之后都是以数组的形式保存下来的,所以直接按照数组的方式接收即可。

public class NewDemo01{
	public static void main(String args[]){
		System.out.print("不传递参数(fun()):") ;
		fun() ;			// 不传递参数
		System.out.print("\n传递一个参数(fun(1)):") ;
		fun(1) ;		// 传递一个参数
		System.out.print("\n传递五个参数(fun(1,2,3,4,5)):") ;
		fun(1,2,3,4,5) ;
	}
	public static void fun(int ... arg){	// 可变参数
		for(int i=0;i<arg.length;i++){		// 循环输出
			System.out.print(arg[i] + "、") ;
		}
	}
};

foreach输出
数组的输出一般会使用for循环输出,在jdk1.5之后为了方面数组的输出,提供了foreach语法,
语法格式:
for(数据类型 变量名称:数组名称){}

public class NewDemo02{
	public static void main(String args[]){
		System.out.print("不传递参数(fun()):") ;
		fun() ;			// 不传递参数
		System.out.print("\n传递一个参数(fun(1)):") ;
		fun(1) ;		// 传递一个参数
		System.out.print("\n传递五个参数(fun(1,2,3,4,5)):") ;
		fun(1,2,3,4,5) ;
	}
	public static void fun(int ... arg){	// 可变参数
		for(int x:arg){		// 使用foreach输出输出
			System.out.print(x + "、") ;
		}
	}
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值