这是我第三次学java了,第一次是课堂上,当时贪玩,没有怎么学。第二次在学长的指导下学习的,这一次主要是慕课网、极客学院的视频加书籍《java从入门到精通》自学的。
由于java博大精深,由于时间紧张,我只学习了很基础的部分,并且对java的精华理解也不够深刻,所以只写了大概,没有详细的阐述,有时间我会慢慢完善。
因为我得马上转战Android,这个学期任务太重了,大家一起加油!
一、搭建环境
如果是windows系统依次装jdk、eclipse for java。并且需要设置系统变量,至于怎么配置,详细可以百度,csdn也有很多手把手教你搭建环境的博客,本文只写重点。用Mac系统同学就方便多了,不用手动设置,直接安装eclipse即可。
我的Mac装的是eclipse java ee版本的,为了更好的适用于java学习。如果你的是其他版本不支持java的,可以装一个单独的JDT(java development tools)插件。这里我不建议在一个eclipse安装多个开发环境的插件,因为我的就是这样出问题的,然而现在也没找到解决办法。
怎样快速的装插件呢?对于eclipse装插件可help→install new software。除了去官网eclipse.org 点击projects项找我们所需要的插件,我这里推荐这个方法,http://download.eclipse.org/releases/mars (mars可以替换成我们现在正在使用的eclipse版本代号,常用的有Mars、Luna、kepler、juno,分别对应4.5-4.2的版本)。这里我需要安装java插件,搜索框输入java,找到java development tools勾选安装即可,此步骤需要耐心等待。
*还有另一种方法:help→eclipse marketplace
二、基本语法的注意项目
1)定义常量:final char SEX = '男'; //常量的变量名需要大写,用char类型的字符需要用单引号,当然数字除外,这是直接定义ASCII值
2)比较a++与++a。
例1:运行结果为:a:6 b:6
int a=5;
int b=++a; //让a先执行自增,然后将值赋给变量b
System.out.println("a:"+a);
System.out.println("b:"+b);
例2:运行结果为:a:6 b:5
int a=5;
int b=a++; //将a的值赋给变量b,然后再执行自增
System.out.println("a:"+a);
System.out.println("b:"+b);
3)java 支持的常用赋值运算符,如下表所示:
4)逻辑运算符主要用于进行逻辑运算。Java 中常用的逻辑运算符如下表所示:
5)条件运算符( ? : )也称为 “三元运算符”。
语法形式:布尔表达式 ? 表达式1 :表达式2
运算过程:如果布尔表达式的值为 true ,则返回 表达式1 的值,否则返回 表达式2 的值
eg:运行结果为: 考试成绩如何:及格
int score=68;
String mark = (score >= 60)?"及格":"不及格";
System.out.println("考试成绩如何:"+mark);
6)表达式( 11+ 3* 8 ) / 4 % 3 的结果是( 2 )
答:第一步:计算3*8,结果为24;第二步:计算11+3*8,结果为35;第三步:计算(11 + 3 * 8) / 4,结果为8;第四步:计算(11 + 3 * 8) / 4 % 3,结果为2
/表示除法,用35去除4会默认认为是int类型的所以会是8,但是如果用35/4.0的话那么结果就是8.75
7)注意if是条件语句而非循环语句。if用来判断条件是否满足,用来跳转分支,而不是用于循环,本人理解为只执行一次。
例:为指定成绩53加分,直到分数大于等于 60 为止,输出加分前和加分后的成绩,并统计加分的次数。
错误示范:
public static void main(String[] args) { int score = 53; int count = 0; System.out.println("加分前成绩:"+score); if(score<60){ score++; count++; } System.out.println("加分后的成绩:"+score); System.out.println("共加了"+count+"次!"); }
正确示范:(用for或者while循环语句)
public static void main(String[] args){
int score = 53;
int count = 0;
System.out.println("加分前成绩:"+score);
for(;score<60;score++)
{
count++;
}
System.out.println("加分后成绩:"+score);
System.out.println("共加了"+count+"次!");
}
8)输入方法:Scanner怎么用?
首先导入import java.util.scanner;
Scanner input = new Scanner(System.in);
String str = input.nex();
9)定义数组,及数组长度。
int[] arr = new int[5];
int arr[] = new int[5];
int[] arr = new int[]{1,2,3,4,5};
int[] arr = {1,2,3,4,5};
l = arr.length; //数组arr[]的长度为5
10)import java.util.Arrarys;
Arrays.toString(数组) //该方法的作用有当你需要遍历一个数组时可以引用它的方法
Arrays.sort(数组) //将数组排序
11)foreach遍历数组语法结构: for(元素类型 元素变量:遍历对象){
执行代码
}
import java.util.Arrays;
public class HelloWorld {
public static void main(String[] args) {
// 定义一个整型数组,保存成绩信息
int[] scores = { 89, 72, 64, 58, 93 };
// 对Arrays类对数组进行排序
Arrays.sort(scores);
// 使用foreach遍历输出数组中的元素
for ( int score:scores ) {
System.out.println(score);
}
}
}
12)如何定义java中的方法,并实现调用
public class HelloWorld {
//定义了一个方法名为 print 的方法,实现输出信息功能
public void print() {
System.out.println("Hello World");
}
public static void main(String[] args){
//在 main 方法中调用 print 方法
HelloWorld test=new HelloWorld(); //<span style="color:#3366ff;">好好理解这里,类与对象的关系。创建对象名为test</span>
test.print(); //<span style="color:#3366ff;">好好理解这里,对象调用方法。</span>
}
}
13)在java中为什么输出结果是数字但是还要.toString?
答:toString 是将其他数据类型转换为String类型的一个方法。
在用System.out.println()时,默认调用toString方法。
例如:
int a=8;
System.out.println(a)
默认是:System.out.println(a.toString);
14)
import java.util.Arrays;
public class HelloWorld {
public static void main(String[] args) {
HelloWorld hello = new HelloWorld();
int[] scores={79,52,98,81};
//调用方法,传入成绩数组,并获取成绩的个数
hello.sort(scores);
int count = scores.length;
System.out.println("共有"+count+"个成绩信息!");
}
/*
* 功能:将考试成绩排序并输出,返回成绩的个数
* 定义一个包含整型数组参数的方法,传入成绩数组
* 使用Arrays类对成绩数组进行排序并输出
* 方法执行后返回数组中元素的个数
*/
public int sort(int[] scores){
Arrays.sort(scores);
System.out.println(Arrays.toString(scores));
//返回数组中元素的个数
return scores.length;
}
}
15)Math.random()的用法。
public class HelloWorld {
public static void main(String[] args) {
// 创建对象,对象名为hello
HelloWorld hello = new HelloWorld();
// 调用方法并将返回值保存在变量中
int[] nums = hello.getArray(8);
// 将数组转换为字符串并输出
System.out.println(Arrays.toString(nums));
}
/*
* 功能:创建指定长度的int型数组,并生成100以内随机数为数组中的每个元素赋值
* 定义一个带参带返回值的方法,通过参数传入数组的长度,返回赋值后的数组
*/
public int[] getArray(int length) {
// 定义指定长度的整型数组
int[] nums = new int[length];
// 循环遍历数组赋值
for (int i=0;i<nums.length;i++) {
// 产生一个100以内的随机数,并赋值给数组的每个成员
nums[i] = (int)(Math.random()*100);
}
return nums; // 返回赋值后的数组
}
}
16)如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量。
在普通成员方法中,则可以直接访问同类的非静态变量和静态变量。
静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法。
17)类的构造方法:构造方法名称要与本类名相同。
18)定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去 new 一个内部类对象,即:内部类 对象名 = 外部类对象.new 内部类( );
如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量,可以使用 this 关键字。
//外部类HelloWorld
public class HelloWorld{
//外部类的私有属性name
private String name = "imooc";
//外部类的成员属性
int age = 20;
//成员内部类Inner
public class Inner {
String name = "爱慕课";
//内部类中的方法
public void show() {
System.out.println("外部类中的name:" +HelloWorld.this.name); //<span style="color:#3366ff;">this关键词</span>
System.out.println("内部类中的name:" +name);
System.out.println("外部类中的age:" + age);
}
}
//测试成员内部类
public static void main(String[] args) {
//创建外部类的对象
HelloWorld o = new HelloWorld ();
//创建内部类的对象
Inner inn = o.new Inner();
//调用内部类对象的show方法
inn.show();
}
}
//外部类
public class HelloWorld {
// 外部类中的静态变量score
private static int score = 84;
// 创建静态内部类
public static class SInner {
// 内部类中的变量score
int score = 91;
public void show() {
System.out.println("访问外部类中的score:" + HelloWorld.score);
System.out.println("访问内部类中的score:" + score);
}
}
// 测试静态内部类
public static void main(String[] args) {
// 直接创建内部类的对象
SInner si = new SInner();
// 调用show方法
si.show();
}
}
20)instanceof
f(animal instanceof Dog){
Dog dog=(Dog)animal; /*强制转换*/
} else{输出提示}
if(animal instanceof Cat){
Cat cat=(Cat)animal; /*强制转换*/
} else{输出提示}
22)接口。
23)匿名内部类。