Java相关基础知识小总结
作者:互联网
引言:这是本人学习java过程总结一些基础知识和简单案例
Java开发工具包:安装JDK
JDK目录介绍:
1、JDK/bin:存放许多命令,如:javac.exe(负责编译)和 java.exe(负责运行)
2、开发HelloWord.java源程序【照抄,不要问why,注意大小写】
JDK,JRE,JVM三者之间的关系,以及JDK,JRE包含的主要结构
JDK=JRE+JAVA的开发工具(javac.exe java.exe javadoc.exe)
JRE=JVM+JAVA核心类库
3、将HelloWord.java源程序通过javac工具进行编译:
首先确定javac命令是否可用,在DOS命令窗口,输入javac,回车,若出现'java'不是内部或外部命令,也不是运行程序或处理 文件,因为windows操作无法找到javac命令文件
*处理javac不可用问题:
windows操作系统如何搜索硬盘某个命令?
1、从当前目录下搜索
2、若在当前目录找不到,从环境变量path指定路径搜索某个命令
3、再搜索不到,则报以上是错误
配置环境变量:
1、安装完成后,右击"我的电脑",点击"属性",选择"高级系统设置"
2、选择"高级"选项卡,点击"环境变量"
3、在个人用户变量新建JAVA_HOME、PATH两个属性,若已存在则点击"编辑"
变量名:JAVA_HOME
变量值:F:\software\install\Java_11 // 要根据自己的实际路径配置
变量名:PATH
变量值:%JAVA_HOME%\bin
4、在系统变量新建PATH属性,若已存在则点击"编辑"
变量名:PATH
变量值:%JAVA_HOME%\bin
5、测试JDK安装是否成功
1、按住Win+R键,键入"cmd";
2、键入命令: java -version、java、javac 几个命令,出现以下信息,说明环境变量配置成功;
Java包括三大块:
1、JavaSE(Java标准版)
2、JavaEE(Java企业版)
3、JavaME(Java微型版)
JavaSE是基础,以后主要方向是JavaEE方向
Java语言特性【开源、免费、纯面向对象、跨平台】:
1、简单性:屏蔽指针的概念(C++实现Java语言底层),不是C语言
2、面向对象:更符合人的思维模式,更容易理解
可移植性:Java程序可以做到一次编译,到处运行,不做任何修改,放到 windows、Linux操作系统运行(跨平台)
3、由于两个操作系统内核不同,执行指令也不一样,所以Java程序不能直接和操作系统打交道
4、为了实现Java程序和底层操作系统打交道,让Java运作一台虚拟计算机【JVM】
5、多线程:按照分解成多个子任务,每个子任务称为一个线程,共同完成主任务的运行过程,可以缩短时间,提高服务效率
6、健壮性:Java语言运行中产生的垃圾是自动回收的【简称GC机制】
7、安全性:JVM可以阻止系统外产生的副作用,Java语言中适当限制增强了安全性 (扩:Java编译器输出的并不是可执行代码,而是字节代码【bytecode】)
java API文档:将语言提供的类库,称为api.
开始第一个Java程序
// 创建一个Java源文件:HelloWorld.java
public class HelloWorld {
/*这是第一个Java程序
*它将打印Hello World
*这是一个多行注释
*/
public static void main(String []args) {
//这是单行注释,也是程序的入口
/**这个也是单行注释**/
System.out.println("Hello World");//打印 Hello World
}
}
Java中名称命名规范
*包名:都要用小写
*类名,接口名:首字母都要大写
*变量名,方法名:第一个单词小写,第二个单词大写
*常量名:所有字母大写,如果是多单词用下划线连接
Java程序运行包括两个重要的阶段:
1、编译阶段:符合Java语则生成正常的字节文件(并非是纯粹的二进制)
过程:新建一个.java扩展名文件(源文件),里面编写的是Java源代码/源程序【符合Java语则,需要记忆】,使用当中自带javac.exe命令进行Java程序编译,javac java源文件路径在DOS命令窗口使用,javac是一个java编译器工具/命令
*一个java源文件可以编写生成多个.class文件
*最终要执行的文件是字节码文件/class文件(删不删除java程序并不影响
java程序的执行,但是一般java源程序不要删除)
*编译结束后,将class文件拷贝到其他操作系统中运行【跨平台】
2、运行阶段:JDK安装完成后(自带一个javac.exe),此外还有一个工具/命令,叫做java.exe(命令主要负责运行阶段)
* java.exe在DOS命令窗口使用
*例:硬盘上有一个HelloWorld.class,那么就这样用:java HelloWorld
*注:千万不要写成java HelloWorld.class【是错误的】
前面有public class后面名称一定和java文件名称一样
编译和运行两个过程不能有“异常”出现
过程:
1、打开DOS命令窗口
2、输入:java A
3、java.exe命令启动JVM,JVM会启动类加载器classLoader
4、classLoader去硬盘搜索A.class文件,找到该文件将字节文件装载到JVM中
5、JVM解释字节文件(A.class)以二进制1010101010数据
6、然后操作系统执行二进制和底层硬件平台交互
数据类型:
1、整型:byte int short long
2、浮点型:float double
3、字符型:char
4、布尔型:boolean
优先级:
由低到高: boolean,byte,short,char—> int —> long—> float —> double
自动类型转换:从低级别到高级别,系统自动转的
强制类型转换:什么情况下使用?把一个高级别的数赋给一个别该数的级别低的变量
运算符:
1、算术运算符:+ - * / “+”(连接符) ++(前加加1 先加后用;反之,后加加1 先用后加) --(前减减1 先加后用;反之,后减减1 先用后加)
2、赋值运算符:= += -= *= /= %=
3、比较运算符:比较结果要么是true,要么是false
4、逻辑运算符:& | ^ ! && ||
False && False False
False && True False
False || True True
5、位运算符(用于操作二进制位的运算符):& | ^& << >> >>>(无符号右移)
关键字:
专门用的字符串(单词),所有的字母都要小写
(1)48个关键字:abstract、assert、boolean、break、byte、case、catch、char、class、continue、default、do、double、else、enum、extends、final、finally、float、for、if、implements、import、int、interface、instanceof、long、native、new、package、private、protected、public、return、short、static、strictfp、super、switch、synchronized、this、throw、throws、transient、try、void、volatile、while.
(2)2个保留字(现在没用以后可能用到作为关键字):goto、const.
(3)3个特殊直接量:true、false、null.
标识符:
凡是自己可以起名字的地方(对各种变量,方法和类命名使用的字符序列)
*注: 1、标识符有字母、数字、_(下划线)、$所组成,其中不能以数字开头,不能用Java中的保留字(关键字)
2、标识符采用有意义的简单命名
3、"$"不要在代码中出现。(是由于在后面内部类中,编译后会出现$符号)
循环语句:
- for, while 及 do...while
for(初始部分;判断条件;迭代部分){
// 代码语句
}
while(判断部分){
// 循环体
// 迭代部分(不能漏掉),否则是死循环
}
// 初始化
do
{
// 循环体 迭代部分
}while(判断部分)
// 先执行后判断
分支语句:
if(-else if)-else 语句和switch语句
if(判断部分){
// 如果布尔表达式的值为true
}else{
// 如果布尔表达式的值为false
}
// 多层判断
if(判断部分){
// 判断1
}else if(判断部分){
// 判断2
}else if(判断部分){
// 判断3
}else{
//执行最后
}
// 嵌套式
// 外
if(判断部分){
// 内
if(判断部分){
// 如果布尔表达式的值为true
}else{
// 如果布尔表达式的值为false
}
}else{
// 执行最后
}
switch(){ // 里面参数只能是int short String类型
case: 常量1;
// 语句1
case: 常量2;
// 语句2
case: 常量3;
// 语句3
...
default: // 其他情况
// 语句4
break; // 跳出
}
// switch-case根据switch表达式中的值,依次匹配case中的值,一旦匹配成功,就执行相应case结构中的语句,调用完后继续执行case中的语句,直到遇到break,或者switch-case结构的结尾,跳出switch-case结构
案例
计算当前总天数
import java.util.Scanner;
public class Araby
{
public static void main(String[] args)
{
@SuppressWarnings("resource")
Scanner scan=new Scanner(System.in);
System.out.print("请输入年份:");
int year=scan.nextInt();
System.out.print("请输入月份:");
int month=scan.nextInt();
System.out.print("请输入天数:");
int day=scan.nextInt();
int sunDay=0;
switch(month)
{
case 12:
sunDay +=30;
case 11:
sunDay +=31;
case 10:
sunDay +=30;
case 9:
sunDay +=31;
case 8:
sunDay +=31;
case 7:
sunDay +=30;
case 6:
sunDay +=31;
case 5:
sunDay +=30;
case 4:
sunDay +=31;
case 3:
if((year%4==0&&year%100!=0)||year%400==0)
{
}
else
{
sunDay +=28;
}
case 2:
sunDay +=31;
case 1:
sunDay +=day;
}
System.out.println(year+"年"+month+"月"+day+"日\t总过了:"+sunDay+"天了!");
}
}
判断某年属于什么生肖年?
import java.util.Scanner;
public class ChiZod
{
public static void main(String[] args)
{
@SuppressWarnings("resource")
Scanner input = new Scanner(System.in);
System.out.print("请输入年份:");
int year = input.nextInt();
switch(year%12)
{
case 0:
System.out.println("猴年");
break;
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;
case 8:
System.out.println("龙年");
break;
case 9:
System.out.println("蛇年");
break;
case 10:
System.out.println("马年");
break;
case 11:
System.out.println("羊年");
break;
}
}
}
判断数组里的最大值与最小值
public class ComSiz
{
public static void main(String[] args)
{
int i;
int arr[] = new int[]{8,3,88,9,23};
//int arr[] = {,,,}
int max = arr[0];
//将第一项赋给max
int min = arr[0];
//将第一项赋给min
for(i=0;i<arr.length;i++)
{
//遍历数组中所有元素
if(arr[i]>max)
{
/*arr[0] > arr[0] flase
* arr[1] > arr[0] flase
* arr[2] > arr[0] true
* arr[3] > arr[2] flase
* arr[4] > arr[2] flase
* max = arr[2]**/
max = arr[i];
}
if(arr[i]<min)
{
/*arr[0] < arr[0] flase
* arr[1] < arr[0] true
* arr[2] < arr[1] flase
* arr[3] < arr[1] flase
* arr[4] < arr[1] flase
* min = arr[2]**/
min = arr[i];
}
}
System.out.println("max="+max);
System.out.println("min="+min);
}
}
九九乘法表
public class Test1
{
public static void main(String[] args)
{
int i,j;//定义变量
for(i=1i<=9;i++)
{
/**
for(初始化;判断条件;迭代部分)
**/
//外循环控制行数
for(j=1;j<=i;j++)
{
//内循环控制每行的表达式个数
System.out.print(i+"*"+j+"="+j*i+"\t");//打印表达式
}
System.out.println();//打印并换行
}
}
}
计算器
public class Test3 extends JFrame
{
public Test3()
{
Container co2 = this.getContentPane();
co2.setLayout(new GridLayout(4,5));
JLabel jl1 = new JLabel("+");
JLabel jl2 = new JLabel("*");
JLabel jl3 = new JLabel("-");
JLabel jl4 = new JLabel("/");
JTextField jt3 = new JTextField(10);
JTextField jt4 = new JTextField(10);
JTextField jt5 = new JTextField(10);
JTextField jt6 = new JTextField(10);
JTextField jt7 = new JTextField(10);
JTextField jt8 = new JTextField(10);
JTextField jt9 = new JTextField(10);
JTextField jt10 = new JTextField(10);
JTextField jt11 = new JTextField(10);
JTextField jt12 = new JTextField(10);
JTextField jt13 = new JTextField(10);
JTextField jt14 = new JTextField(10);
JButton jb3 = new JButton("=");
JButton jb4 = new JButton("=");
JButton jb5 = new JButton("=");
JButton jb6 = new JButton("=");
JPanel jp5 = new JPanel();
JPanel jp6 = new JPanel();
JPanel jp7 = new JPanel();
JPanel jp8 = new JPanel();
co2.add(jp5);
jp5.add(jt3);
jp5.add(jl1);
jp5.add(jt4);
jp5.add(jb3);
jp5.add(jt5);
co2.add(jp6);
jp6.add(jt6);
jp6.add(jl2);
jp6.add(jt7);
jp6.add(jb4);
jp6.add(jt8);
co2.add(jp7);
jp7.add(jt9);
jp7.add(jl3);
jp7.add(jt10);
jp7.add(jb5);
jp7.add(jt11);
co2.add(jp8);
jp8.add(jt12);
jp8.add(jl4);
jp8.add(jt13);
jp8.add(jb6);
jp8.add(jt14);
jb3.addActionListener(e ->{//注册监听器
if (e.getSource()==jb3)
{
// e.getSource()可以获得,e:表示一个事件
int a = Integer.parseInt(jt3.getText());//定义一个整型变量a接收jt3的值
int b = Integer.parseInt(jt4.getText());
int c = a + b;//定义一个变量c接收a,b的和
jt5.setText(""+c);//得出最后的结果
}
});
jb4.addActionListener(e1 ->{
if (e1.getSource()==jb4)
{
int d = Integer.parseInt(jt6.getText());
int e = Integer.parseInt(jt7.getText());
int f = d - e;
jt8.setText(""+f);
}
});
jb5.addActionListener(e2 ->{
if (e2.getSource()==jb5)
{
int g = Integer.parseInt(jt9.getText());
int h = Integer.parseInt(jt10.getText());
int i = g * h;
jt11.setText(""+i);
}
});
jb6.addActionListener(e3 ->{
if (e3.getSource()==jb6)
{
int j = Integer.parseInt(jt12.getText());
int k = Integer.parseInt(jt13.getText());
int l = j / k;
jt14.setText(""+l);
}
});
this.setTitle("我的计算器");
this.setBounds(300,400,600,400);
this.setVisible(true);
}
public static void main(String[] args)
{
new Test3();
}
}
标签:总结,case,Java,java,int,基础知识,new,JTextField 来源: https://blog.csdn.net/m0_51608622/article/details/120990435