陈国君Java程序设计基础笔记和习题
陈国君Java程序设计基础笔记和习题
第⼀章 Java语⾔基础
笔记
习题
1.1 Java语⾔有哪些特点?
跨平台、适合于分布式计算环境、⾯向对象、平台⽆关、对线程、动态性、⽀持⽹络编译。
解释型语⾔(将源代码解释成机器码并执⾏,然⽽Java的代码是需要编译的,但是编译后解释运⾏在JVM上。*.java → *.class → 不同的平台。Java可通过JIT,将代码编译成本机机器代码,从⽽提⾼运⾏速度。 )
1.2 什么是Java虚拟机?
Java虚拟机JVM(Java Virtual Machine)是可以运⾏Java字节码的软件,JVM可以看做⼀个字节码的解释器。
1.3 什么是字节码?采⽤字节码的最⼤好处是什么?
字节码(Byte-code)是⼀种包含执⾏程序,由⼀序列op 代码/数据对组成的⼆进制⽂件(*.class)。其最⼤的好处是可跨平台执
⾏,write once, run anywhere。
1.4 什么是平台⽆关性?Java语⾔是怎么实现平台⽆关性的?
是指代码⽆需修改就可以在不同的平台上运⾏。通过字节码和JVM在⽬标代码级实现。
1.5 Java语⾔程序有⼏种?每种程序包含哪⼏个⽅⾯?
两种,分别是应⽤程序(Application)和⼩程序(Applet)。两者开发原理相同但是在运⾏环境和计算结构上显著不同。Application可以在平台上独⽴运⾏,Applet内嵌在HTML⽂件⾥,需要在浏览器的⽀持下运⾏。
完整的Java程序包含:package语句,import语句,public classDefinition公共定义⼀部分;(classDefinition部
分,interfaceDefinition部分不是必须的,但是通常存在)。
1.6 什么是Java程序的主类?应⽤程序与⼩程序的主类有何不同?
主类是程序执⾏的⼊⼝,必须包含main⽅法。⼩程序的主类继承⾃Japplet,该类必须是public类。
第⼆章 Java语⾔开发环境
第三章 Java语⾔基础
笔记
输⼊数据
使⽤Java.io 输⼊数据
public class class_name{
public static void main(String[] args)throws IOException{//throws关键字声明,表⽰抛出异常,交给调⽤者处理
.
.
.
String str;
BufferedReader buf;//声明⼀个BufferedReader类的变量
InputStreamReader inp;
inp =new InputStreamReader(System.in);
buf =new BufferedReader(inp);
str = adLine();//建议⽤try(), catch()
.
.
.
}
}
buf = new BufferedReader( new InputStreamReader( System.in ) )
使⽤java.util.Scanner输⼊数
import java.util.*;
public class App3_7{
public static void main(String[] args){
String s1, s2;
Scanner scan =new Scanner(System.in);
s1 = Line();
s2 = ();
}
}
运算符
instanceof操作符⽤于测试左侧的对象是否为右侧类的⽰例,返回boolean数据类型。
习题
Java有哪些基本数据类型?
8个;4个⽤于整型分别是byte,short,int,long,分别占1,2,3,4个字节。单精度,双精度浮点型float,double分别占4,8个字节(最⼩值可⽤Double.MAX_VALUE取得)。char类型⽤Unicode编码,占⽤2字节。
如何将数值字符串转换为数值型数据?
使⽤各个数据类型对应的类提供的parse⽅法。
第四章流程控制
笔记
例4.5 计算Fibonacci数列的前16项
java程序设计基础视频public static void main(String[] args){
int i =0;
int j =1;
for(int k =1; k <17; k = k +2){
System.out.format("第%d项为%d%n第%d项为%d%n", k, i, k +1, j);
i = i + j;
j = i + j;
}
}
}
习题
第五章数组与字符串
笔记
Java把内存分为:栈内存和堆内存
⽅法中定义的⼀些基本类型和对象的引⽤变量都在⽅法的栈内存中分配,当在⼀段代码块中定义⼀个变量时,Java在栈内存中为这个变量分配内存空间,当超出变量的作⽤域时,Java会⾃动释放掉为该变量所分配的内存空间。
堆内存⽤来存放由new运算符所创建的数组或对象,在堆中分配的内存,由Java虚拟机的垃圾回收器来⾃动管理。在堆中创建数组或对象时,同时还在栈中定义⼀个特殊的变量,栈中的这个变量就成了
数组或对象的引⽤变量,其保存了对象在堆内存中的⾸地址,以便在程序中使⽤栈的引⽤变量来访问堆中的数组或对象。引⽤变量在运⾏到其作⽤域外时被释放,⽽堆内存中数组和对象本⾝仍然存在,它会在⼀个不确定的时间被JVM的垃圾回收期收⾛,这是Java⽐较占内存的原因之⼀。
Java有⼀个特殊的引⽤型变量null,如果⼀个引⽤变量赋值为null,其不指向任何对象。
⼀维数组
数据类型[] 数组名; //声明⼀维数组
数组名 = new 数据类型[个数]; //分配内存给数组
数组类Arrays的常⽤⽅法
binarSearch( XXX[] a, X key )
sort( XXX[] )
sort( XXX[], int fromIndex, int toIndex )
XXX[] copyOf( XXX[] original, int newLength )
equal( XXX[]a, XXX[]b )
声明⼀个数组,长度为5,利⽤循环对其赋值,再通过另⼀个循环逆输出其元素的内容。
final int MAX =5;
int i;
int[] a =new int[MAX];
Scanner scan =new Scanner( System.in );
for( i =0, i < MAX, i++){
a[i]= Int;
for( i = a.length -1; i >=0; i --)
System.out.printf("%d ");
}
约瑟夫环问题,有N个⼈围坐⼀圈并以顺时针从1到N编号,从S个⼈进⾏1到M报数,报到M的⼈出圈,反复循环,给出N个⼈的出圈顺序
final int N =13;
final int S =3;
final int M =5;
int i = S -1, j =0, k = N, g =1;
int[] a =new int[N];
for(int h =1, h <= N, h++){
a[h -1]= h;
}
do{
i = i +(M -1);
while(i >= k)
System.out.print("  "+ a[i]);
for( j = i; j < k -1; j++)
a[j]= a[j +1];
k--;
g++;
}while(g <= N);
另⼀种算法
final int N =13, S =3, M =5;
int[] x =new int[N];
int[] y =new int[N];
int i =0, j =0, k = S -2;
for( i=1; i <= N; i++){
for( j =1; j <= M; j++){
if(k == N-1)
k =0;
else
k++;
if(x[k]==1)
j--;
}
x[k]=1;
y[n++]= k +1;
for(i =0; i < N; i++)
System.out.print(q[i]+"  ");
}
foreach语句与数组
for( type elment: array ){
System.out.println( element );
.
.
.
}
计算并输出杨辉三⾓
int i, j;
int level =7;
int[][] iayong =new int[level][];
for(i =0, i < iaYong.lenth; i ++){
iaYong[i][0]=1;
for(j =1; j < iaYong[i].length-1; j++)
iaYong[i][j]= iaYong[i -1][j -1]+ iaYong[i -1][j];    iaYong[ i ][ iaYong[ i ].length -1]=1;
}
for(int[] row : iaYong){
for(int col : row )
System.out.print( col +"  ");
System.out.println();
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。