Java语言基础 目录

java

  • 一、Java程序预览
    • 1.1、Hello World
    • 1.2、Eclipse使用
      • 1.2.1、项目位置
      • 1.2.2、重置窗口布局
      • 1.2.3、设置字体
      • 1.2.4、修改控制台字体
      • 1.2.4、项目的导入与保存
      • 1.2.5、修改快捷键
      • 1.2.6、重命名
      • 1.2.7、编码
      • 1.2.8、设置JDK本地JavaDOC API路径及源码路径

    • 1.3、快捷键
      • 1.3.1、Eclipse快捷键大全

    • 1.4、调试(debug)
      • 1.4.1、设置断点
      • 1.4.2、启动调试
      • 1.4.3、执行调试

  • 二、类型
    • 2.1、java中常用的类型

  • 三、输入与包
  • 四、流程控制
    • 4.0、if条件分支
    • 4.1、for循环
    • 4.2、while循环
    • 4.3、do-while循环
    • 4.4、if-else多条件分支
    • 4.5、switch开关分支

  • 五、包与注释
  • 六、数组
    • 6.1、 一维数组
    • 6.2、二维数组
      • 6.2.1、二维数组的定义与使用基础
      • 6.2.2、二维数组赋值
      • 6.2.3、二维数组应用
      • 6.2.4、方法与排序

  • 七、练习与笔记
  • 八、推荐学习网站
  • 八、示例与视频

一、Java程序预览

Java的语法与C非常类似,这里先使用几个非常简单的程序以点带面来区分C语Java的区分再细讲每个知识点。该文仅针对有编程基础的朋友参考。

1.1、Hello World

创建java项目

新建一个类

 

运行

1.2、Eclipse使用

1.2.1、项目位置

在项目上右键 ->properties ->location

在项目上alt+enter键也可以打开项目属性

1.2.2、重置窗口布局

显示窗口,如控制台

选择show view

1.2.3、设置字体

 

window->preferences

1.2.4、修改控制台字体

1.2.4、项目的导入与保存

 点击选择项目

 

完成

1.2.5、修改快捷键

默认快捷键为alt+/,可以修改为其它习惯的快捷键,如tab,tab

1.2.6、重命名

有时我们需要将类名或文件名修改,不能随意的原因是因为一个类可能被其它的类所引用

1.2.7、编码

Window -> Preferences -> General -> Workspace -> Text file encoding -> Other

万国码 unicode

utf-8 gb-2312-80 big5

Window -> Preferences -> Web -> JSP Files -> Text file encoding-> Other:

1.2.8、设置JDK本地JavaDOC API路径及源码路径

还都生成的是无意义的变量名,这样可能会对含有相同类型的变量参数的调用顺序造成干扰;

按Ctrl+点击系统对象可以查看源代码,源代码位置:

这种问题,我们把JDK或者相应Jar包的源码导入进去就能避免了:

Window -> Preferences -> Java -> Installed JREs -> Edit:

选中设置好的JRE目录,编辑,然后全选 JRE system libraries 下的所有Jar包,点击右边的 Source Attachment;

 

External location 下,选中JDK安装目录下的src.zip 文件,一路OK 下来。

1.3、快捷键

1.3.1、Eclipse快捷键大全

Ctrl+1 快速修复(最经典的快捷键)

Ctrl+D: 删除当前行

Ctrl+Alt+↓ 复制当前行到下一行(复制增加)

Ctrl+Alt+↑ 复制当前行到上一行(复制增加)

Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)

Alt+↑ 当前行和上面一行交互位置(同上)

Alt+← 前一个编辑的页面

Alt+→ 下一个编辑的页面(当然是针对上面那条来说了)

Alt+Enter 显示当前选择资源(工程,or 文件 or文件)的属性

Shift+Enter 在当前行的下一行插入空行(这时鼠标可以在当前行的任一位置,不一定是最后)

Shift+Ctrl+Enter 在当前行插入空行(原理同上条)

Ctrl+Q 定位到最后编辑的地方

Ctrl+L 定位在某行 (对于程序超过100的人就有福音了)

Ctrl+M 最大化当前的Edit或View (再按则反之)

Ctrl+/ 注释当前行,再按则取消注释

Ctrl+O 快速显示 OutLine

Ctrl+T 快速显示当前类的继承结构

Ctrl+W 关闭当前Editer

Ctrl+K 参照选中的Word快速定位到下一个

Ctrl+E 快速显示当前Editer的下拉列表(如果当前页面没有显示的用黑体表示)

Ctrl+/(小键盘) 折叠当前类中的所有代码

Ctrl+×(小键盘) 展开当前类中的所有代码

Ctrl+Space 代码助手完成一些代码的插入(但一般和输入法有冲突,可以修改输入法的热键,也可以暂用Alt+/来代替)

Ctrl+Shift+E 显示管理当前打开的所有的View的管理器(可以选择关闭,激活等操作)

Ctrl+J 正向增量查找(按下Ctrl+J后,你所输入的每个字母编辑器都提供快速匹配定位到某个单词,如果没有,则在stutes line中显示没有找到了,查一个单词时,特别实用,这个功能Idea两年前就有了)

Ctrl+Shift+J 反向增量查找(和上条相同,只不过是从后往前查)

Ctrl+Shift+F4 关闭所有打开的Editer

Ctrl+Shift+X 把当前选中的文本全部变为小写

Ctrl+Shift+Y 把当前选中的文本全部变为小写

Ctrl+Shift+F 格式化当前代码

Ctrl+Shift+P 定位到对于的匹配符(譬如{}) (从前面定位后面时,光标要在匹配符里面,后面到前面,则反之)

下面的快捷键是重构里面常用的,本人就自己喜欢且常用的整理一下(注:一般重构的快捷键都是Alt+Shift开头的了)

Alt+Shift+R 重命名 (是我自己最爱用的一个了,尤其是变量和类的Rename,比手工方法能节省很多劳动力)

Alt+Shift+M 抽取方法 (这是重构里面最常用的方法之一了,尤其是对一大堆泥团代码有用)

Alt+Shift+C 修改函数结构(比较实用,有N个函数调用了这个方法,修改一次搞定)

Alt+Shift+L 抽取本地变量( 可以直接把一些魔法数字和字符串抽取成一个变量,尤其是多处调用的时候)

Alt+Shift+F 把Class中的local变量变为field变量 (比较实用的功能)

Alt+Shift+I 合并变量(可能这样说有点不妥Inline)

Alt+Shift+V 移动函数和变量(不怎么常用)

Alt+Shift+Z 重构的后悔药(Undo)

1.3.2、

1.4、调试(debug)

1.4.1、设置断点

当程序运行到该位置时将中断,等待你的下一步指示。

在代码前双击用于设置与取消断点。

1.4.2、启动调试

点击工具栏中的“debug”按钮可以启动调试。

可以选择切换视图,切换后的效果:

1.4.3、执行调试

单步进入:一步一步执行到每一个细节

单步跳过:只计算当前结果不会进行细节

查看运行时的变量

在遇到逻辑错误时请调试。

二、类型

2.1、java中常用的类型

double 是64位

package com.zhangguo.c139.chapter2;

public class Demo1 {

public static void main(String[] args) {

//数字

//整型

int i1=100;

//长整型

long i2=998877665544332211l;

//短整型

short i3=235;

//浮点型

double d1=3.5; //双精度

double d2=3;

float f1=(float)3.5; //单精度

float f2=3.5f; //单精度

//布尔类型 boolean true真/false假

boolean isPass=true;

boolean isOk=false;

boolean isBig=5>8;

if(isPass){

System.out.println("通过了");

}else{

System.out.println("未通过");

}

//单字符

char f=\'女\';

char m=\'男\';

//字符串

String s1="Hello 中文!";

String s2=1+""; //转换成String

}

}

运行:

小转大,类型匹配

double d=5;

String s="Hello"+9527

2.3、强制转换

大转小,类型适应(数字转数字)

int i=(double)198.5;

2.4、不同类型间的强制转换

        String name = "9527";

int brother = Integer.parseInt(name) + 1;

System.out.println(brother);

double d = Double.parseDouble(name);

Boolean.parseBoolean(name);

float f = Float.parseFloat(name);

输出:

三、输入与包

package com.zhangguo.chapter1;

//导入包,同一个包不用导入直接使用,不同的包需导入

import java.util.Scanner;

import com.zhangguo.chapter1.Math1;

/**

* 输入

* @author Administrator

*

*/

public class Math2 {

public static void main(String[] args) {

//定义扫描器

Scanner input=new Scanner(System.in);

//定义变量

int n=input.nextInt(); //等待输入

//String name=input.next(); //输入字符

//float mark=input.nextFloat(); //输入单精度数字

//double pi=input.nextDouble(); //输入双精度数字

//条件 判断

if(n==0){

System.out.println("零");

}else if(n%2==1){ //如果一个数与2求余为1

System.out.println("奇数");

}else{

System.out.println("偶数");

}

}

}

输出3位数到指定数之间的中能同时被3或5整除的数

package com.zhangguo.c139.chapter2;   //包

//导包

import java.util.Scanner;

public class InputDemo {

public static void main(String[] args) {

//创建扫描器对象

Scanner input=new Scanner(System.in);

// 输出3位数到指定数之间的中能同时被3或5整除的数

System.out.print("请输入n:");

//从键盘输入

int n = input.nextInt();

for (int i = 100; i <= n; i++) {

if(i%3==0&&i%5==0){

System.out.println(i);

}

}

}

}

a)、导入包,导入类

同一个包中的类可以直接引用

不同包中的类型需要导入,使用import,import java.util.Scanner;

如需使用某个包下的所有类,则使用*号,如import java.util.*;

b)、输入

定义扫描器

使用扫描器对象的next*()方法

package com.zhangguo.chapter1;

//导入包,同一个包不用导入直接使用,不同的包需导入

import java.util.Scanner;/**

* 输入

* @author Administrator

*

*/

public class Math2 {

public static void main(String[] args) {

//定义扫描器

Scanner input=new Scanner(System.in);

System.out.print("请输入一个数:");

//定义变量

int n=input.nextInt(); //等待输入

//String name=input.next(); //输入字符

//float mark=input.nextFloat(); //输入单精度数字

//double pi=input.nextDouble(); //输入双精度数字

//条件 判断

if(n==0){

System.out.println("零");

}else if(n%2==1){ //如果一个数与2求余为1

System.out.println("奇\t数");

}else{

System.out.println("偶数");

}

}

}

四、流程控制

4.0、if条件分支

判断一个数是奇数还是偶数

package com.zhangguo.chapter1;

/**

* 判断一个数是奇数还是偶数

* @author Administrator

*

*/

public class Math1 {

public static void main(String[] args) {

//定义变量

int n=0;

//条件 判断

if(n==0){

System.out.println("零");

}else if(n%2==1){ //如果一个数与2求余为1

System.out.println("奇数");

}else{

System.out.println("偶数");

}

}

}

4.1、for循环

for循环计算1到该数间能被3和5同时整除的数之和

package com.zhangguo.chapter1;

//导入包,同一个包不用导入直接使用,不同的包需导入

import java.util.Scanner;

/**

* 计算1到该数间能被3和5同时整除的数之和

*

* @author Administrator

*

*/

public class Math3 {

public static void main(String[] args) {

// 定义扫描器

Scanner input = new Scanner(System.in); // 默认的提示 alt+/

// 提示输入

System.out.print("请输入一个数:");

// 执行输入

int n = input.nextInt();

int sum = 0;

// 循环

for (int i = 1; i <= n; i++) {

// 判断,逻辑运算,与C一样,&&与,||或,!非

if (i % 3 == 0 && i % 5 == 0) {

// 累加

sum = sum + i;

}

}

System.out.println("总和是:" + sum);

}

}

运行结果:

4.2、while循环

while循环计算1到该数间能被3和5同时整除的数之和

package com.zhangguo.chapter1;

import java.util.Scanner;

/**

* while循环计算1到该数间能被3和5同时整除的数之和

*

*/

public class Math6 {

public static void main(String[] args) {

Scanner input=new Scanner(System.in);

System.out.print("请输入一个数:");

int n=input.nextInt();

int i=1,sum=0;

while(i<=n){

if(i%3==0&&i%5==0){

sum=sum+i;

}

i++;

}

System.out.println("总和是:"+sum);

}

}

break:结束当前循环

package com.zhangguo.chapter1;

import java.util.Scanner;

/**

* while循环计算1到该数间能被3和5同时整除的数之和

*

*/

public class Math6 {

public static void main(String[] args) {

Scanner input=new Scanner(System.in);

System.out.print("请输入一个数:");

int n=input.nextInt();

int i=1,sum=0;

while(i<=n){

if(i%3==0&&i%5==0){

sum=sum+i;

System.out.println(i);

break;

}

i++;

}

System.out.println("总和是:"+sum);

System.out.println("i的值:"+i);

}

}

continue:结束当次循环,继续下一次循环

package com.zhangguo.chapter1;

import java.util.Scanner;

/**

* while循环计算1到该数间能被3和5同时整除的数之和

*

*/

public class Math7 {

public static void main(String[] args) {

Scanner input=new Scanner(System.in);

System.out.print("请输入一个数:");

int n=input.nextInt();

int i=1,sum=0;

while(i<=n){

if(i%3==0&&i%5==0){

sum=sum+i;

}

i++;

if(i<=15) {continue;}

System.out.println(i);

}

System.out.println("总和是:"+sum);

System.out.println("i的值:"+i);

}

}

4.3、do-while循环

do-while 输入年龄,介于1-100之间

package com.zhangguo.chapter1;

import java.util.Scanner;

/**

* do-while 输入年龄,介于1-100之间

*

*/

public class Math8 {

public static void main(String[] args) {

Scanner input = new Scanner(System.in);

int age = 0;

do {

System.out.print("请输入年龄:");

age = input.nextInt();

} while (age < 1 || age > 100); //条件为真,循环继续

System.out.println("年龄是:" + age);

}

}

4.4、if-else多条件分支

if-else 输入购物金额,完成商场打折功能

0-99 打9折

100-500 打8折

500以上打7折

package com.zhangguo.chapter1;

import java.util.Scanner;

/**

* do-while 输入年龄,介于1-100之间

*

*/

public class Math8 {

public static void main(String[] args) {

Scanner input = new Scanner(System.in);

int age = 0;

String range = "";

do {

System.out.print("请输入年龄:");

age = input.nextInt();

} while (age < 1 || age > 100); // 条件为真,循环继续

System.out.println("年龄是:" + age);

if (age >= 0 && age <= 30) {

range = "青年";

} else if (age >= 31 && age <= 60) {

range = "中年";

} else if (age >= 61 && age <= 90) {

range = "老年";

} else {

range = "晚年";

}

System.out.println("年龄段是:" + range);

}

// 0-30 青年

// 31-60 中年

// 61-90 老年

// 晚年

}

 

4.5、switch开关分支

switch 输入1-7 输出星期一到星期天

等值比较

package com.zhangguo.chapter1;

import java.util.Scanner;

public class Math9 {

public static void main(String[] args) {

Scanner input = new Scanner(System.in);

int week = 0;

System.out.print("请输入周:");

week = input.nextInt();

switch (week) { //char int

case 1:

System.out.println("星期一");

break;

case 2:

System.out.println("星期二");

break;

case 3:

System.out.println("星期三");

break;

case 4:

System.out.println("星期四");

break;

case 5:

System.out.println("星期五");

break;

case 6:

System.out.println("星期六");

break;

case 7:

System.out.println("星期天");

break;

default:

System.out.println("输入错误");

break;

}

}

}

五、包与注释

a)、指定包名,相当于文件夹,一般使用倒置的域名如(com.baidu.项目名)

整理代码

避免冲,如一个项目中有多个同名的类,可以处在不同的包中间

类可以不在任何包中,一个包中也可以有0-N个类

包与文件夹一一对应

包的声明要放在第一行

b)、类型名,首字母大小

c)、代码中自动插入:public static void main(String[] args)

//包名,1单行注释

package com.zhangguo.chapter1;

/**

* 判断一个数是奇数还是偶数

* @author 张果

*2文档注释

*/

public class Demo1 {

/*

* 主方法,程序的入口

* 3多行注释

*/

public static void main(String[] args) {

//语句

System.out.println("Hello World!");

}

}

e)、注意java中有3种类型的注释

六、数组

Java 语言中提供的数组是用来存储固定大小的同类型元素。你可以声明一个数组变量,如 numbers[100] 来代替直接声明 100 个独立变量 number0,number1,....,number99

6.1、 一维数组

a)、计算5位同学的平均成绩

package com.zhangguo.chapter1;

public class Math91 {

public static void main(String[] args) {

int[] a=new int[10];

for (int i = 0; i < a.length; i++) {

a[i]=i*i;

}

for (int i = 0; i < a.length; i++) {

System.out.println(a[i]);

}

}

}

  输出:

求平均成绩与总分

package com.zhangguo.chapter2;

import java.util.Scanner;

public class Array2 {

public static void main(String[] args) {

//统计平均成绩

//实例化(创建)长度为5的数组

int[] scores=new int[5];

int sum=0;

//int[] scores2={20,30,50,90,100,99,19,78};

//int[] scores3=new int[]{20,30,50,90,100,99,19,78};

//int[] scores2=new int[8];

//scores2[0]=20;

//scores2[1]=30; //...

//输入器

Scanner input=new Scanner(System.in);

//scores.length 数组的长度

for (int i = 0; i <scores.length; i++) {

scores[i]=input.nextInt();

}

//遍历数组

for (int i = 0; i < scores.length; i++) {

sum=sum+scores[i];

}

System.out.println("总分是:"+sum+",平均分:"+(sum/scores.length));

}

}

package com.zhangguo.chapter2;

import java.util.Scanner;

public class Array2_2 {

public static void main(String[] args) {

//统计平均成绩

//实例化(创建)行为3的数组,列为2的数组

double[][] scores=new double[3][2];

double sum=0;

int n=0; //个数,输入

//输入器

Scanner input=new Scanner(System.in);

//scores.length 数组的长度

for (int i = 0; i <scores.length; i++) {

for (int j = 0; j < scores[i].length; j++) {

scores[i][j]=input.nextDouble();

n++;

}

}

//遍历数组

for (int i = 0; i <scores.length; i++) {

for (int j = 0; j < scores[i].length; j++) {

sum+=scores[i][j]; //sum=sum+scores[i][j];

}

}

System.out.println("总分是:"+sum+",平均分:"+(sum/n));

}

}

6.2、二维数组

6.2.1、二维数组的定义与使用基础

定义数组并赋初值:

package zhangsan;

public class C1 {

public static void main(String[] args) {

System.out.println("Hello");

int[][] a = new int[][] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };

System.out.println(a[0][2]);

for (int i = 0; i < a.length; i++) { //行

for (int j = 0; j < a[i].length; j++) { //列

System.out.print(a[i][j]+" ");

}

System.out.println();

}

}

}

  输出:

6.2.2、二维数组赋值

定义数组并赋值

package zhangsan;

import java.util.Scanner;

public class C2 {

public static void main(String[] args) {

int sum=0;

Scanner input=new Scanner(System.in);

int[][] a = new int[3][2];

//a[0][0]=98;

//a[0][1]=89;

for (int i = 0; i < a.length; i++) {

for (int j = 0; j < a[i].length; j++) {

System.err.print("请输入a["+i+"]["+j+"]=");

a[i][j]=input.nextInt();

}

}

for (int i = 0; i < a.length; i++) { //行

for (int j = 0; j < a[i].length; j++) { //列

sum+=a[i][j];

}

}

System.out.println(sum);

}

}

 输出:

6.2.3、二维数组应用

有3名同学,每名同学有语文与数学考试成绩,求平均分与总分?

package com.zhangguo.chapter2;

import java.util.Scanner;

public class Array2_2 {

public static void main(String[] args) {

//统计平均成绩

//实例化(创建)行为3的数组,列为2的数组

double[][] scores=new double[3][2];

double sum=0;

int n=0; //个数,输入

//输入器

Scanner input=new Scanner(System.in);

//scores.length 数组的长度

for (int i = 0; i <scores.length; i++) {

for (int j = 0; j < scores[i].length; j++) {

scores[i][j]=input.nextDouble();

n++;

}

}

//遍历数组

for (int i = 0; i <scores.length; i++) {

for (int j = 0; j < scores[i].length; j++) {

sum+=scores[i][j]; //sum=sum+scores[i][j];

}

}

System.out.println("总分是:"+sum+",平均分:"+(sum/n));

}

}

运行结果:

6.2.4、方法与排序

java中内置了非常多的工具方法如Math类、Arrays类等,使用sort可以实现给数组排序:

package com.zhangguo.chapter2;

import java.util.Arrays;

public class Method {

public static void main(String[] args) {

int a=1,b=2;

int max=a>b?a:b; //三目

System.out.println(max);

//算术

System.out.println(Math.max(9, 10));

int[] a1={8,9,1,3,4,5,0,-1};

//排序

Arrays.sort(a1);

for (int i = a1.length-1; i>=0; i--) {

System.out.print(a1[i]+" ");

}

//字符,字符串比较只能用equals, ==

String x="abc";

System.out.println(x.equals("abc"));

System.out.println("abc"==x);

}

}

?:表达式的作用是如果表达式1为真则返回或执行第2个表达式,如果表达式为假则执行或返回第3个表达式

表达式1?表达式2:表达式3

如:int min=a<b?a:b;

七、练习与笔记

请说出下面程序的运行结果?

package a.b.c.d;

public class Test {

public static void main(String[] args) {

for (int i = 1; i <=10; i++) {

if(i%2==0){

System.out.print("a");

}else if(i%3==0){

System.out.print("b");

}else {

System.out.print("c");

}

}

}

}

cabacacaba

break在程序中的作用是什么?他能用在那些结构中?

package a.b.c.d;

public class Test2 {

public static void main(String[] args) {

for (int i = 0; i <10; i++) {

if(i%2==0){

System.out.print("a");

}else if(i%7==0){

System.out.print("b");

break;

}else {

System.out.print("c");

}

}

}

}

 acacacab

continue在程序中的作用是什么?他能用在那些结构中?

当输入0、2、7时程序分别输出什么?

package a.b.c.d;

import java.util.Scanner;

public class TestC {

public static void main(String[] args) {

Scanner input=new Scanner(System.in);

String[] weeks={"天","一","二","三","四","五","六"};

int index=input.nextInt();

System.out.println("星期"+weeks[index]);

}

}

上机练习,用户注册示例

package com.zhangguo.chapter2;

import java.util.Scanner;

/**

* 注册

*

*/

public class Math9 {

public static void main(String[] args) {

Scanner input = new Scanner(System.in);

String uid,pwd;

String flag;

do {

System.out.print("请输入帐号:");

uid = input.next();

System.out.print("请输入密码:");

pwd = input.next();

System.out.println("注册成功,您的用户为:"+uid+"\t密码:"+pwd);

System.out.print("是否继续(y/n):");

flag=input.next();

} while (flag.equals("y")); //条件为真,循环继续

}

}

运行结果:

八、推荐学习网站

http://www.maiziedu.com/

http://www.imooc.com/

http://www.jikexueyuan.com/

 https://ke.qq.com/

http://www.chuanke.com/

八、示例与视频

第一次视频:http://pan.baidu.com/s/1bp7pTjL

JDK8下载:http://pan.baidu.com/s/1nuSuIKT

Eclipse下载:http://pan.baidu.com/s/1c2koakg

第三次视频:http://pan.baidu.com/s/1mhAfWSg (JavaSE_第2章第3次_数组,方法,复习流控)

 

上课示例:https://files.cnblogs.com/files/best/JavaSE02.7z

 

作业:

在这里找 http://www.cnblogs.com/best/p/5991771.html 5个题

在这里找 http://www.cnblogs.com/best/p/5991751.html 5个题

所有课后练习,包含预习,简答,编程 All

 

以上是 Java语言基础 目录 的全部内容, 来源链接: utcz.com/z/395002.html

回到顶部