文章目录
- 前言
- 一、Java语言基础
- 关于命令符号
- 良好的编译习惯
- java编程基础框架
- 数据类型
- 注释
- 相关快捷键
- 二、方法
- 重写和重载的区别
- 输出方法
- 三、数组和字符串
- 增强for循环
- 判断内容相同
- 命令行参数输入
- 地址传递
- 字符串
- 留下问题:数组填充内容
前言
本文内容是基于学习过C语言和C++基础知识进行编辑的。
所用的编译软件时是eclipse
一、Java语言基础
首先,带大家辨析一些概念:
.exe是源程序文件,可以运行
关于命令符号
java表示运行, javac表示编译
在上图,红色部分时命令符号,白色部分则是java源文件。
这两个命令符号都在bin目录下。
良好的编译习惯
1.类名首字母大写。
2.方法名采用驼峰法命名,可以简洁明了的知道方法的用途。
java编程基础框架
代码如下(示例):
package Chapter1;//声明程序所在包
import java.util.Scanner;//引入输入库
import javax.swing.JOptionPane;//引入
import java.util.*;//这种方法可以引用java的所有库
public class Example{
final int AEF = 1;//符号常量(final + 正常定义(名字全大写)),一旦赋值不可重新赋值。
//常量不仅可以定义在函数外,也可定义在函数内。
public static void main(String[] args) {
//z
//从键盘输入赋值
Scanner inte = new Scanner(System.in);
int a = inte.nextInt();//从键盘输入一个int型数据
long b = inte.nextLong();//从键盘输入一个long型数据
//输出
System.out.println(a);
System.out.println(b);//输出,并换行
System.out.print(a);//仅输出
System.out.print(b);
//三种循环
for(int i =0;i < 1;i++)
{
System.out.println("FOR循环");
}
do {
System.out.println("do-while循环");
}while(false);
while(a > 0) {
a--;
System.out.println("while循环");
}
//对话框 涉及JOptionPane类
int i ,j ,max;
String s1,s2;
JOptionPane.showMessageDialog(null ,"这是一个对话框");//对话框展示
s1 = JOptionPane.showInputDialog(null, "输入第一个整数");
s2 = JOptionPane.showInputDialog(null, "输入第二个整数");
i = Integer.parseInt(s1);
j = Integer.parseInt(s2);
max = i > j ? i : j;
JOptionPane.showMessageDialog(null ,i + "和" +j +"的最大值为" + max);
}
}
以下是对话框的结果:
PS:javax是区别于java的拓展包,所以需要另外引入。
数据类型
类型 | 字节数 |
---|---|
char | 2 |
short | 2 |
int | 4 |
long | 8 |
float | 4 |
double | 8 |
ASCII码:数字<大写<小写
65~90 A~Z (大写字母+32)
注释
//或者/* */或者/*****/,前两种比较常用
相关快捷键
main+Alt+/ 主函数
(主函数是程序的入口,要想运行,主函数必须为静态。)
Syso+Alt+/ 输出(一般都是Printin)
最后,是思维导图(可以根据思维导图检索知识的缺失):
二、方法
思维导图:
代码如下(示例):
package Chapter1;
public class Example1 {
public static void main(String[] args) {
Example1 c = new Example1();
int a = 5;
//方法调用
int b = FanFa(a);
System.out.println(b);//赋值调用
System.out.println(FanFa(a));//直接打印调用
System.out.println(c.FanFa(b));//对象调用
}
public static int FanFa(int i)
{
return i;
}
}
重写和重载的区别
重载 :一个类中定义多个同名的方法。
重写:重写发生在继承中多个类。
其中方法名、参数、修饰符一致。
提示:方法的重载和方法的返回值类型无关(返回值不同,不能构成重载。)
输出方法
对于输出,java保留了在c语言中包括%d的方法,又添加了“aaa”+“ssss”的方法。
三、数组和字符串
思维导图:
代码:
package Chapter1;
import java.util.Arrays;//引入Arrays类
import java.util.List;
//引入
public class Example2 {
public static void main(String[] args) {
//数组的定义
Object[] arr = new Object[3];
int[] arr1 = new int[3];
int[] arr2 = {1,2,3,5,6,1};
int[] arr3 = new int[]{1,2,3};//常用前两种
int[][] arr4 = {{1,3,2,5},{4,5,6,5}};
int[] arr5 = {7,5,6};
int a = 123;
//增强for循环foreach遍历
for(int[] i :arr4)
{
for(int j : i)
{
System.out.print(j+",");
}
}
System.out.println("");
//数组元素拷贝,将arr5[3]拷到arr2[6]
System.arraycopy(arr5, 1, arr2, 0, arr5.length-1);
System.out.println(Arrays.toString(arr2));
//判断数组内容相等
System.out.println(Arrays.equals(arr3,arr5));//arr3 = {1,2,3},arr5 = {7,5,6}.
//数组填充内容
Arrays.fill(arr,"A");
System.out.println(Arrays.toString(arr));
//将数组转为list(该方法使用了泛型等后面学到了泛型可再次深入学习)
List<int[]>inte1 = Arrays.asList(arr2);//Q:出现问题,留下乱码
List<Integer>inte2 = Arrays.asList(a);
System.out.println(inte1+" "+inte2);
//数组排序
Arrays.sort(arr5);
System.out.println(Arrays.toString(arr5));
//地址传递
//按值传递
//按指针传递
//按引用传递
//字符串
//字符串的创建和应用
System.out.println("到字符串了");
String a1 = "abc";//直接定义
char a2[] = {'a','b','c','d','c'};
String s1 = new String(a2);
String s2 = new String(a2,1,2);
System.out.println(s1+" "+s2);//char型数组变成String
System.out.println(s1.length());//获取s1的长度
System.out.println(s1.indexOf("b"));//返回s1中b第一出现的下标
System.out.println(s1.lastIndexOf("c"));//c最后一次出现的下标
System.out.println(s1.charAt(3));//根据索引获取字符 注意:起始位置为0
//toString函数
Pig m = new Pig();
System.out.println(m.toString());//输出对象s1中的所有属性,每次使用都需要重写
}
}
增强for循环
判断内容相同
根据上述代码,得出的结果是false
命令行参数输入
应用步骤:
step1:打开run下的Run confiqurations…
step2:在Arguments窗口设置args[]的值
step3:用for循环遍历进行验证
代码如下:
package com.sxt;
public class Welcome {
public static void main(String args[ ] )
{
for(int i=0;i<args.length;i++)
System.out.println(args[i]);
}
}
地址传递
首先,了解以下这些定义:
栈:基本类型局部变量
堆:引用类型的值
一般来说,数组的地址放在栈中,值放在堆中。
形参:传递给方法/函数的值,有确定的值。
实参:用于接受函数/方法调用前设有确定的值。
参数有三种传递方式:
按值传递、按指针传递、按引用传递
按值传递的方法所传递的值为基本类型,形参改变,实参不变。
按引用传递的方法所传递的参数类型为引用类型。形参改变,实参也随之改变。
后面将介绍引用类型及基本类型数据,其中数据类型为类引用的对象也属于引用类型,实参发生改变。
基本类型有以下几种:
整数类型: long、int、short、byte
浮点类型: float、double
字符类型: char
布尔类型: boolean
引用类型有以下几种:
类Class、 接口类型Inteface、 数组类型Array、 枚举类型Enum、 注解类型、 字符串型
字符串
- 字符串的创建
直接声明:
使用char数组间接创建:
以下是错误示例:
我们发现这种创建方法可以完成char转换成String的步骤。于是拓展一个字符串和字符之间转换的方法。
- toString()函数
直接输出对象重点中的所属内容
代码:
结果:
如果需要符合想要内容,需要在对象类中重写toString()函数。
- StringBuffer类的引入
StringBuffer 为字符串缓冲区(在原有基础上改变字符串内容而不增加地址)
初始容量为16个字符
String为字符串常量,StringBuffer为字符串变量。String对象一旦创建就不可更改,StringBuffer可以直接更改。所以在新建对象时,String需要将旧对象回收,再去建造新对象。
而StringBuffer直接更改就可以了。
适用情况:String适用于少量字符串操作
StringBuffer适用于多线程,大量字符串
留下问题:数组填充内容