目录
1. 配置java编译环境
2. java基本语法
3. 流程控制与数组
4. 类
5. 集合类的使用
实例1:使用switch结构计算每个月的天数(考虑闰年)
实例2:找到1000以内所有的素数,并且保存到数组中去
实例3:实现一个学生类,需要包含姓名、性别、学号和年龄等属性
实例4:抽象类的继承
针对Windows64位:
链接:https://pan.baidu.com/s/1q7p6YbKSyxl4k90DEeBQVw
提取码:fwmy
(1)安装配置jdk
通过以下步骤配置PATH环境变量:
(2)下载、安装IntelliJ IDEA
两种模式下的视图转换:File — settings — color Scheme(Default与Darcula)
(3)建立java源代码输出“Hello World”
public class Hello {
public static void main(String[] args){
System.out.println("Hello World.");
}
}
Hello World.
Process finished with exit code 0
(4)通过命令提示窗口运行
(1)java程序的构成
程序头包的引用:主要引用JDK软件包自带的包,也可以是自己定义的类,引用之后程序体中就可以自由应用包中的类的方法与属性。
类的定义:可以有多个类的定义,但必须有一个主类,这个主类是程序运行的路口点,在java源程序中,主类的名字同文件名一致。
语句一行以分号结束。
括号{}界定语句序列。
空白指的是语句之间、块内部、或者块之间的空白行。
行注释以//开始的行。
块注释以/*...*/开始和结束。
标识符:
有字母、数字、下划线(_)、美元符号组成,其中美元符号用的比较少。
标识符从一个字母、下划线、美元符号开始。
java语言中对大小写比较敏感。
标识符没有最大长度限制。
标识符定义不能是关键字。
关键字:
java语言中自带的用于标志数据类型名(如:double)。
转义符:
拥有特殊含义的字符见下表。
(2)数据类型
采用三种进制:十六进制、八进制、十进制。
十进制:2
八进制:o45
十六进制:oxBACA
具有缺省int。
用字母L或l表示长整型。
所有java中编译语言中的整数类型都是有符号的数字。
必须包含单引号引用的文字。
代表一个16 bit Unicode字符。
默认类型为double,有f和d两种形式。
boolean数据类型有两种:true和false
如:boolean f=true;
(3)变量与常量
(4)运算符和表达式
+(加)、-(减)、*(乘)、/(除)、%(取模运算)、++(增量运算符)、--(减量运算符)
==(等于)、!=(不等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)
~(位求反)、&(按位与)、|(按位或)、^(按位异或)、<<(左移)、>>(右移)、>>>(不带符号右移)
三目运算符:(?:):
表达式:x?y:z;
判断x是否为真,如果为真则选y,如果为假则选z。
对象运算符:instanceof
(1)if-else语句
if(布尔表达式)
{
语句块1;
}
else
{
语句块2;
}
布尔表达式:返回为true时,执行语句1;返回为false时,执行语句2;
(2)switch语句
switch(表达式1)
{
case 表达式2:
语句;
break;
case 表达式3:
语句;
break;
default:
语句;
break;
}
(3)for循环语句
for(初始化表达式;测试表达式;步长){
语句;
}
(4)while循环
while(布尔表达式){
语句;
}
布尔表达式为true执行语句,否则跳出。
(5)do语句
do{
语句;
}while(布尔表达式);
(6)数组
数据类型 标识符[]
如:int tab[];声明数据类型为整型的数组tab。
由于数组是一个对象,所以用关键字new来创建一个数组。
tab=new int[10]; 创建存储10个整型数据的数组tab。
创建完成后,赋值:
- 每个元素赋值:tab[0]=1
tab[1]=3;
.......
tab[9]=9;
- 直接声明的时候说明其值
int tab[]={1,2,3,4,5};
(1)类的定义与声明
访问说明符 class 类名 extends 超类名 implements 接口名
- 访问说明符public或者省略。
- 类名:用户自定义类名。
- 超类名:是指已经存在的类名。
- 接口名:接口
成员变量格式:访问说明符 数据类型 变量名
- 访问说明符有:public、private、protected。
- public:省略时候默认的公有类型。可以由外部对象进行访问。
- private:私有类型,只允许在类的内部的方法和使用,若从外部访问,则需要建立函数,间接的访问。
- protected:受保护类型,子类访问受到控制。
方法:类的操作定义,标志着类的动态特征。
访问说明符 数据类型 方法名(数据类型1 变量名1,数据类型2 变量名2)
(2)类的单继承性
java语言中允许用externs关键字从一个类扩展出一个新类,新类继承超类的成员变量和方法,并且可以覆盖。
(3)特殊变量
两个特殊变量:super和this
类声明中用关键字extends扩展了其超类后,super用在扩展类中引用其它超类中的成员变量。
指向当前变量或者实例。
(4)构造函数
类中的构造函数用来初始化一个类。
(5)包
声明包的格式:Package 包名;
Package为关键字,包名为标识符。
Package语句要作为程序非注释语句的第一行。
包内的类名唯一。
引用包中类时,使用import语句。格式import 包名.类名
(1)List接口
List接口扩展了Collection,可以包含重复元素。元素是有顺序的,每个元素都有一个index值(从0开始)标明元素在列表中的位置。在声明时可以带有一个泛型参数,即List
ArrayList/Vector常用方法:
(2)Set接口
Set接口扩展了Collection接口,禁止重复的元素,是数学中“集合”的抽象。实现它的两个主要类是哈希集合(HashSet)及树集合(TreeSet)。
(3)Map接口
Map用于存储“关键字”(key)和“值”(value)的元素对,其中每个键映射到一个值,当需要通过关键字实现对值的快速存取时使用。两个主要实现类:TreeMap、HashMap。
Map接口常用方法:
(4)Iterator接口
Iterator接口是一个遍历集合元素的工具,并具有从正在遍历的集合中去除对象的能力。具有如下三个实例方法,
(5)Collections类
Collections类提供了对集合的操作,包括
对List重新排序,使其中的元素按照某种次序关系升序排列。有两种形式,简单形式只是将元素按照自然次序排列,第二种形式需要一个附加的Comparator对象作为参数,用于规定比较规则,可用于实现反序或特殊次序排序。
其作用与排序算法恰好相反,它打乱List中的任何次序。也就是说以随机方式重排元素,任何次序出现的几率都是相等的。在实现偶然性游戏的时候,这个算法很有用。
copy:接受两个参数,目标List和源List,将源中的元素复制到目标,覆写其中的内容。目标List必须至少与源一样长,如果更长,则多余的部分内容不受影响。
(1)解析
闰年是可以整除4,但不可以整除100的数,或者直接可以整除400。
java.util.Scanner是Java5的新特征,主要功能是简化文本扫描、获取控制台输入。
通过new Scanner(Sysem.in)创建一个Scanner,控制台会一直等待输入,直到敲回车结束,把所输入的内容传给Scanner,作为扫描对象。
next() 每次取到一个间隔符前面的数据。
nextInt() 是取next() 然后把字符串解析成一个int数字。
英语:闰年(Leap year)
(2)代码实现
import java.util.Scanner;
public class test {
//判断是否为闰年
public static boolean isLeapyear(int year){
return((year%4==0)&&(year%100!=0)||(year%400==0));
}
//输出具体年份月份的天数
public static int days(int year,int month){
int day;
switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
day=31;
break;
case 2:day=isLeapyear(year)?29:28;
break;
default:
day=30;
break;
}
return day;
}
//程序执行开始
public static void main(String[] args){
int year,month;
Scanner s=new Scanner(System.in);
System.out.print("请输入年份:");
year=s.nextInt();
System.out.print("请输入月份:");
month=s.nextInt();
System.out.print(year+"年"+month+"月的天数是"+(days(year,month)));
}
}
(3)结果展示
请输入年份:2020
请输入月份:4
2020年4月的天数是30
Process finished with exit code 0
(1)解析
质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数,质数也称为素数。通过循环遍历2至n/2,若中间的任意一个数能被n整除,则n不是质数,返回false;若所有的数均不能被n整除,则返回true。
英语:素数(prime)
(2)代码实现
public class text1 {
//判断给定的数是不是素数
public static boolean isprime(int n){
int i;
for(i=2;i<=n/2;i++){
if((n%i)==0){
return false;
}
}
return true;
}
public static void main(String[] args){
int[] primes=new int[1000];
int i,count=0,j;
for(i=2;i<=1000;i++){
if(isprime(i))
{
primes[count]=i;
count++;
}
}
for(j=0;j
(1)题目要求
题目:实现一个学生类,需要包含姓名、性别、学号和年龄等属性。要求:
- 无参数和有参数的构造函数
- 各个属性(不包括学号)的set和get方法
- 使用类变量实现学号的自增
- 使用枚举类型表示性别
- 实现toString()方法
- 编写main函数进行测试
(2)代码实现
枚举类型:Gender.java
public enum Gender {
MALE,
FEMALE
}
实现要求:Student.java
public class Student {
private String name;
private int no;
private int age;
private Gender g;
private static int count=0;
public String getName(){
return name;
}
public String setName(String name){
return this.name=name;
}
public int getAge(){
return age;
}
public int setAgeint (int age){
return this.age=age;
}
public Gender getG(){
return g;
}
public void setG(Gender g){
this.g=g;
}
public int getNo(){
return no;
}
Student(String name,int age,Gender g){
this.name=name;
this.age=age;
this.g=g;
count++;
no=count;
}
Student(){
this("",18,Gender.MALE);
}
public String toString(){
return name+","+g+","+age+","+no;
}
}
测试代码:text.java
public class text {
public static void main(String[] args){
Student s1=new Student("zhang san",20,Gender.MALE);
Student s2=new Student("li hong",21,Gender.FEMALE);
Student s3=new Student("wang ming",23,Gender.MALE);
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
}
}
运行结果:
zhang san,MALE,20,1
li hong,FEMALE,21,2
wang ming,MALE,23,3
Process finished with exit code 0
(1)题目
题目:抽象类的继承
- 编写抽象类Shape,包含抽象方法void draw()。
- 从类Shape派生两个类Rectangle和Circle。
- 在main函数中分别实例化Rectangle和Circle的对象,赋值给Shape类的引用变量,并调用其draw方法。
(2)实现过程
public abstract class Shape {
abstract void draw();
}
public class Rectangle extends Shape {
void draw(){
System.out.println("Draw rectangle.");
}
}
public class Circle extends Shape {
void draw(){
System.out.println("Draw circle.");
}
}
public class ShapeTester {
public static void main(String[] args){
Shape s=new Rectangle();
s.draw();
Shape r=new Circle();
r.draw();
}
}
(3)结果显示
Draw rectangle.
Draw circle.
Process finished with exit code 0