提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
本文章将记录我学习Java的过程。
提示:以下是本篇文章正文内容,下面案例可供参考
一、IDEA项目目录结构
1.项目中的文件
demo是我们所创建的一个Java项目
.idea 是idea平台为每一个项目自动生成的文件包
src文件中所存储的是我们所写的java源代码
demo1.iml是系统平台文件
libraries是jar包(功能插件)
2.命名规则
阿里规约:不存在不在包里文件
创建包:
a.包名必须全小写
b.包结构通过.符号表示
c.一般来说,包名都是域名的倒叙。
例如:创建scr文件中创建一个包,命名为demo1
创建名称为:com.jr.demo1
创建类:
a.类首字母大写
b.类后面的后缀为.java
二、Java程序基础
1.程序入口
代码如下(示例):
package com.jr.demo1;//(单行注释)当前类所在的目录位置
public class Demo1 //创建的Demo1类
{
public static void main(String[] args) //程序入口的固定格式
{
}
}
修饰符:public static void
public(公有的)
static 静态的 ,程序运行前,就提前加载出来的,提前创建出来的,提前存在的
void 返回值是空的;void 代表着"结束",main()方法是程序的入口,也是出口
main 不能改名
String[] args:参数 -参数任务完成的数值。
2.输出语句
代码如下(示例):
package com.jr.demo1;
public class Demo1 {
public static void main(String[] args) {
System.out.println("Hello World!");//输出语句
}
}
运行结果:
3.输入语句
代码如下(示例):
package com.jr.demo1;
import java.util.Scanner;//导入java.util包下的Scanner类
public class Demo1 {
public static void main(String[] args) {
System.out.println("请输入你的名字:");
Scanner input = new Scanner(System.in); //创建Scanner类型的对象input
String name = input.next(); //调用Scanner类的相关方法,来获取指定类型的变量
System.out.println("你输入的名字是:"+name);
}
}
运行结果
4.变量
(1)Java变量的类型:
a.基本类型:
整数类型:
byte(1个字节,8位,最大存储127)
short(2个字节 16位,最大存储3千左右)
int(4个字节 32位,最大存储21个亿)
long(8个字节 64位,)
小数类型:
float(4个字节)
double(8个字节)
布尔类型:
boolean(1位) 代表真或者假
字符类型:
char(2个字节) 代表一个汉字,一个字母,一个符号
b.引用类型: Scanner String
(2)Java变量的使用:
a.基本类型:
1.声明变量(通知内存开辟一个空间): 变量类型 变量名; int age
2.给变量赋值: age=9;
合并:int age=9; int age=input.nextInt();
3.使用变量:sout(age);
b.引用类型:
1.声明变量: 变量类型 变量名; Scanner input;(通知内存开辟一个空间)
2.给变量赋值: input=new 变量类型():
合并:Scanner input=new Scanner(System.in);
3.使用:input.next(); 打点.调用方法();
(3)Java变量的转换规则:
基本数据类型:
1.boolean 不参与类型转换
2.byte,short,char 都是最小类型,三者之间不进行类型转换。
3.小类型转大类型,是自动类型转换,
大类型转小类型,是强制类型转换。
(byte,short,char)< int< long< float< double
4.在程序开发过程中:默认一个整数是int类型;默认小数是double类型。
5.字符串类型可以把基本类型全都转成字符串类型。
5.运算符
a. 算术运算符:+ - * / % ++(自身+1 ) --(自身-1 )
a++与++a的区别:
int a=6; a++; ++a; [当前表达式里只有a一个元素,++在前在后没区别]
System.out.print(a++) a=6
System.out.print(++a) a=7
[当表达式里还有其他的元素成分要完成的时候,
++ 在前先执行自身加1,在完成其他任务;
++ 在后 先完成其任务,在进行自身加1 ]
b.系运算符: > < >= <= == !=
使用关系运算符,可以获得boolean的结果
c.逻辑运算符: && || ! & |
&& 和& 的区别:
&& 是逻辑运算符
& 既是逻辑运算符 也是位运算符
&&和&都表示"并且"
&& 表示短路并且
& 非短路并且
短路指判断条件第一出错,就不会继续执行下去:
例如:
int a=4;
(a>5&&a=3);
这串代码中a>5判断结束是false后,不会再去执行a=3
d.赋值运算符:= += -=
e.三元运算符: a%7==0?7:a%7 —>简写版的if-else选择结构
运算符的执行顺序: 算术> 关系 >逻辑 >赋值运算符
6.选择结构
选择结构=if(判断条件){
具体内容
}else{
具体内容
}
例题:
判断学生成绩
代码如下(示例):
package com.jr.demo1;
import java.util.Scanner;
public class test6 {
public static void main(String[] args) {
System.out.println("请输入成绩:");
Scanner sc = new Scanner(System.in);
int score = sc.nextInt();
if (score >= 90 && score <= 100) {
System.out.println("该学生的成绩是:A级");
} else if (score >= 80 && score < 90) {
System.out.println("该学生的成绩是:B级");
} else if (score >= 70 && score < 80) {
System.out.println("该学生的成绩是:C级");
} else if (score >= 60 && score < 70) {
System.out.println("该学生的成绩是:D级");
} else {
System.out.println("该学生的成绩是:E级");
}
}
}
运行结果:
7.循环结构
任何一个循环结构 = 循环条件(开始条件,循环/终止条件,条件的修改){
循环内容(重复做的事情)
}
例题:
判断是否为素数
代码如下(示例):
package com.jr.demo1;
import java.util.Scanner;
public class test9 {
public static void main(String[] args) {
System.out.println("输入一个数:");
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int a = 0;
for (int i = 2; i < num; i++) {
if (num % i == 0) {
a++;
break;
}
}
if (a == 0 || num == 2) {
System.out.println("这是素数");
} else {
System.out.println("这不是素数");
}
}
}
8.方法
方法是一段功能性的代码,能解决某一类问题----->方法是代码重用的一种手段/方式。
在Java程序中 单词();–>这样的结构一定是方法
方法的使用:
A.定义方法:
[权限修饰符][方法修饰符][返回值类型]方法名([参数列表])[异常类型]{
[方法体]
[return]
}
a.权限修饰符:
public(公有的)
protected(受保护的) —本包下可以用,其他包的子类也可以用
(默认的)—本包下使用
private(私有的)—本类下使用
b.方法修饰符:
static 静态的:提前加载、资源共享
final 最终的:该方法不可以被重写。
synchronized 同步的:用来解决多线程并发问题
abstract 抽象的: 该方法没有方法体—定规则。
native 本地的 :用其他编程语言实现的功能,给java程序用。
c.返回值类型:
第一种:有返回值类型,所有变量类型都可以充当返回值类型。
第二种:没有返回值类型,java程序中只有一种方法没有返回值类型 ,构造方法。
第三种:返回值为空,void 代表着功能结束。
d.方法名: 标识符 ----起名规则
1.选择动词
2.使用小驼峰规则:第一个单词首字母小写,其他单词首字母大写
e.参数列表:
协助开发者,一起来完成该功能的数据。
f.异常类型: 还没学
g.方法体:一段功能代码
h.改变程序执行顺序的关键字:
程序的三种控制结构:顺序结构,选择结构,循环结构。
continue --只能出现循环结构里。
break----可以出现在循环结构,也可以出现在switch选择结构了。
return-----只能出现在方法里,终止一个方法。
System.exit(0):----系统退出
B.使用方法:
直接调用方法名:
例题:
寻找1-100以内的素数
代码如下(示例):
package com.jr.demo1;
public class test17 {
public static void main(String[] args) {
System.out.println("1-100之间的素数有:" );
for (int i=1;i<=100;i++) {
if (getPrimeNumbers(i)){ //调用方法getPrimeNumbers();
System.out.print(i+"\t");
}
}
}
public static boolean getPrimeNumbers(int i) //定义一个方法,作用是判断是否为素数
{
int count=0;
if (i==1)
{
return false;
}
for (int j=2;j<i;j++)
{
if (i%j==0)
{
count++;
}
}
if (count==0)
{
return true;
}
return false;
}
}
运行结果:
三、万年历练习
代码如下(示例):
package com.jr.demo1;
import java.util.Scanner;
public class Perpetualcalendar {
public static void main(String[] args) {
//输入所需要日历的具体年份与月份
System.out.println("请输入年份:");
Scanner sc = new Scanner(System.in);
int year = sc.nextInt();
System.out.println("请输入月份:");
int month = sc.nextInt();
//求输入月份具体有几天
int day=getDaysByMonth(year,month);
//求自1900年1月1日开始到输入年的具体天数
int yearsum = 0;
for (int i = 1900; i < year; i++) {
yearsum += getFlatLeapYear(i) ? 366 : 365;
}
//求从1月1日开始到输入月的具体天数
int monthsum = 0;
for (int i = 1; i < month; i++) {
monthsum+=getDaysByMonth(year,i);
}
//求输入月的1号是星期几
int week = (yearsum + monthsum + 1) % 7;
if (week == 0) {
week = 7;
}
//打印万年历
System.out.println(year + "年" + month + "月");
System.out.println("一\t二\t三\t四\t五\t六\t日");
for (int i = 1; i < week; i++) {
System.out.print("\t");
}
for (int i = 1; i <= day; i++) {
System.out.print(i + "\t");
if ((yearsum + monthsum + i) % 7 == 0) {
System.out.println();
}
}
}
//判断是否是闰年
public static boolean getFlatLeapYear(int n) {
if (n % 4 == 0 && n % 100 != 0 || n % 400 == 0) {
return true;
}
return false;
}
//判断是一年当中的哪个月,并返回这个月的天数
public static int getDaysByMonth(int year,int month)
{
int day=0;
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {
day = 31;
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
day = 30;
} else {
day = getFlatLeapYear(year) ? 29 : 28;
}
return day;
}
}
运行结果:
总结
本文章记录了我对Java第一周的学习内容。