JAVA
HelloWorld
-
创建一个文件夹存放代码 /java/code
-
新建一个java文件
- 文件后缀名为.java
- hello.java
-
编写代码
public class HelloWorld{ public static void main(String[] args){ System.out.println("Hello World!"); } }
-
运行
C:\Users\Dell>cd D:\3_doc\java\code C:\Users\Dell>d: D:\3_doc\java\code>javac HelloWorld.java D:\3_doc\java\code>java HelloWorld Hello World!
JAVA程序运行机制
-
编译型
-
解释型
-
程序运行机制
IDEA安装
-
什么是IDE
集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境。如微软的Visual Studio系列,Borland的C++ Builder、Delphi系列等。该程序可以独立运行,也可以和其它程序并用。IDE多被用于开发HTML应用软件。例如,许多人在设计网站时使用IDE(如HomeSite、DreamWeaver等),因为很多项任务会自动生成。
-
IDEA介绍
IDEA 全称 IntelliJ IDEA,是java编程语言的集成开发环境。IntelliJ在业界被公认为最好的Java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。IDEA是JetBrains公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。它的旗舰版还支持HTML,CSS,PHP,MySQL,Python等。免费版只支持Java,Kotlin等少数语言。
-
IDEA官网 JetBrains: Essential tools for software developers and teams
JAVA基础语法
注释
-
平时我们编写代码,在代码量比较少的时候,我们还可以看懂自己写的东西,但是当项目结构一旦复杂起来,我们就需要用到注释了
-
注释并不会被执行,是给我们写代码的人看的
-
书写注释是一个非常好的习惯
-
Java中的注释有三种
-
单行注释
public class HelloWorld { public static void main(String[] args) { //单行注释 //输出一个HelloWorld System.out.println("Hello World"); } }
-
多行注释
/* 慈母手中肉 游子身上膘 */
-
文档注释
/** * @description * @Author goldtree */
-
有趣的代码注释
/*** * ,s555SB@@& * :9H####@@@@@Xi * 1@@@@@@@@@@@@@@8 * ,8@@@@@@@@@B@@@@@@8 * :B@@@@X3hi8Bs;B@@@@@Ah, * ,8i r@@@B: 1S ,M@@@@@@#8; * 1AB35.i: X@@8 . SGhr ,A@@@@@@@@S * 1@h31MX8 18Hhh3i .i3r ,A@@@@@@@@@5 * ;@&i,58r5 rGSS: :B@@@@@@@@@@A * 1#i . 9i hX. .: .5@@@@@@@@@@@1 * sG1, ,G53s. 9#Xi;hS5 3B@@@@@@@B1 * .h8h.,A@@@MXSs, #@H1: 3ssSSX@1 * s ,@@@@@@@@@@@@Xhi, r#@@X1s9M8 .GA981 * ,. rS8H#@@@@@@@@@@#HG51;. .h31i;9@r .8@@@@BS;i; * .19AXXXAB@@@@@@@@@@@@@@#MHXG893hrX#XGGXM@@@@@@@@@@MS * s@@MM@@@hsX#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&, * :GB@#3G@@Brs ,1GM@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B, * .hM@@@#@@#MX 51 r;iSGAM@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@8 * :3B@@@@@@@@@@@&9@h :Gs .;sSXH@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@: * s&HA#@@@@@@@@@@@@@@M89A;.8S. ,r3@@@@@@@@@@@@@@@@@@@@@@@@@@@r * ,13B@@@@@@@@@@@@@@@@@@@5 5B3 ;. ;@@@@@@@@@@@@@@@@@@@@@@@@@@@i * 5#@@#&@@@@@@@@@@@@@@@@@@9 .39: ;@@@@@@@@@@@@@@@@@@@@@@@@@@@; * 9@@@X:MM@@@@@@@@@@@@@@@#; ;31. H@@@@@@@@@@@@@@@@@@@@@@@@@@: * SH#@B9.rM@@@@@@@@@@@@@B :. 3@@@@@@@@@@@@@@@@@@@@@@@@@@5 * ,:. 9@@@@@@@@@@@#HB5 .M@@@@@@@@@@@@@@@@@@@@@@@@@B * ,ssirhSM@&1;i19911i,. s@@@@@@@@@@@@@@@@@@@@@@@@@@S * ,,,rHAri1h1rh&@#353Sh: 8@@@@@@@@@@@@@@@@@@@@@@@@@#: * .A3hH@#5S553&@@#h i:i9S #@@@@@@@@@@@@@@@@@@@@@@@@@A. * * * 又看源码,看你妹妹呀! */
-
标识符
-
关键字
abstract assert boolean break byte case catch char class const continue default do double else enum extends final finally float for goto if implements import instanceof int interface long native new package private protected public return strictfp short static super switch synchronized this throw throws transient try void volatile while -
Java所有的组成部分都需要名字。类名,变量名以及方法名都被称为标识符
-
标识符注意点
- 所有的标识符都可以以字幕,美元符或下划线开始
- 首字母之后可以是字母,美元符,下划线或者数字
- 不能使用关键字作为变量名或方法名
- 标识符是大小写敏感的
- 可以使用中文名,但是一般不用,不要使用拼音,low
数据类型
- 强类型语言
- 要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用
- 弱类型语言
- Java的数据类型分为两大类
- 基本类型(primitive type)
- 引用类型(reference type)
示例
public class demo01 {
public static void main(String[] args) {
//整数
byte num1 = 100;
short num2 = 10000;
int num3 = 1000000000; //最常用
long num4 = 1000000000000L; //LONG类型使用时候用在数字后面用L结尾
//小数
float num5 = 100.00F; //FLOAT类型使用时候用在数字后面用F结尾
double num6 = 100.00;
//字符类型
char name1 = 'A'; //不能用""号
//字符串,string不是关键字,是一个类
String name2 = "你好";
//布尔值
boolean flag = true;
//boolean flag = false;
}
数据类型扩展
public class demo02 {
public static void main(String[] args) {
//整数扩展: 进制 二进制0b 十进制 十六进制0x
int i1 = 10;
int i2 = 010; //八进制0
int i3 = 0x61;//十六进制0x
System.out.println(i1);
System.out.println(i2);
System.out.println(i3);
System.out.println("========================================");
/*
=================================================================
浮点数扩展? 银行业务怎么表示
BigDecimal 数学工具类
=================================================================
*/
//float 长度有限 离散 有舍入误差 接近但不等于
//double
//最好避免使用浮点数进行比较!!!
//最好避免使用浮点数进行比较!!!
//最好避免使用浮点数进行比较!!!
float f = 0.1f;
double d = 1.0/10;
System.out.println(f==d); //false
System.out.println(f);
System.out.println(d);
float d1 = 23232332323f;
float d2 = d1 + 1 ;
System.out.println(d1==d2); //true
/*
=================================================================
字符扩展?
=================================================================
*/
char c1 = 'a';
char c2 = '中';
char c3 = '\u0062';
System.out.println("========================================");
System.out.println(c1);
System.out.println((int)c1);
System.out.println(c2);
System.out.println((int)c2);
System.out.println(c3);
//所有的字符本质还是数字
//编码 Unicode 2字节
//转义字符
// \t 制表符
// \n 换行
System.out.println("========================================");
System.out.println("Hello\tWorld");
System.out.println("Hello\nWorld");
//
System.out.println("========================================");
String sa = new String("hello world");
String sb = new String("hello world");
System.out.println(sa==sb); //相当于比较内存地址段
String sc = "hello world";
String sd = "hello world";
System.out.println(sc==sd);
}
}
类型转换
-
由于java是强类型语言,所以要进行有些运算的时候,需要用到类型转换
(低)byte,short,char ->int -> long -> float ->double(高)
-
运算中,不同类型的数据先转化为同一类型,然后进行运算。
-
强制类型转换
-
自动类型转换
public class demo3 {
public static void main(String[] args) {
int i = 128;
byte b = (byte) i; //内存溢出
//强制转换 (类型)变量名 高--低
System.out.println(i);
System.out.println(b);
//自动转换 低--高
double c = i;
System.out.println(c);
/*
注意点
1. 不能对布尔值进行转换
2. 不能把对象类型转换为不相干的类型
3. 在把高容量转换到低容量的时候,强制转换
4. 转换的时候可能存在内存溢出,或者精度问题
*/
System.out.println("==================");
System.out.println((int)23.7); //23
System.out.println((int)-45.89f); //-45
System.out.println("==================");
char c1 = 'a';
int d = c1 + 1 ;
System.out.println(d);
System.out.println((char)d);
}
}
问题
public class demo04 {
public static void main(String[] args) {
//操作比较大的数的时候,注意溢出问题
//JDK7新特性,数字之间可以用下划线分割
int money = 1_000_000_000;
int years = 20;
int total = money*years; //-1474836480 计算的时候溢出了
long total2 = money*years; //默认是int;转换之前已经存在问题
long total3 = money*((long)years);//20_000_000_000
System.out.println(total);
System.out.println(total2);
System.out.println(total3);
}
}
变量
- 变量是什么:就是可以变化的量!
- java是一种强类型语言,每个变量都必须声明期类型
- java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域
- 注意事项:
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型
- 变量名必须是合法的标识符
- 变量声明是一条完整的语句,因此每一个声明都必须以分号结束
public class demo05 {
public static void main(String[] args) {
int a=1,b=2,c=3;
String name = "goldtree";
char x = 'X';
double pi = 3.1415;
}
}
变量作用域
- 类变量
- 实例变量
- 局部变量
public class demo05 {
//类变量 static
static double salary = 2500;
//属性:变量
//实例变量:从属于对象;如果不自行初始化,就自动设置为类型的默认值
String name;
int age;
//main方法
public static void main(String[] args) {
//局部变量;必须声明和初始化值
int i = 10;
System.out.println(i);
//变量类型 变量名字 = new demo05();
demo05 demo05 = new demo05();
System.out.println(demo05.age); //0
System.out.println(demo05.name);//null
//类变量
System.out.println(salary);
}
//其他方法
public void add(){
//System.out.println(i);
}
}
常量
- 常量:初始化后不能再改变值!不会变动的值
- 所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变
- 常量名一般使用大写字符
public class demo06 {
//修饰符,不存在先后顺序
static final double PI = 3.14;
public static void main(String[] args) {
System.out.println(PI);
}
}
变量的命名规范
- 所有变量,方法,类名:见名知意
- 类成员变量:首字母小写和驼峰原则:mouthSalary
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线:MAX_VALUE
- 类名:首字母大写和驼峰原则:Man,GoodMan
- 方法名:首字母小写和驼峰原则:run(),runRun()
运算符
java语言支持的运算符
- 算数运算符:+ - * / % ++ --
- 赋值运算符: =
- 关系运算符:> < >= <= == != instanceof
- 逻辑运算符:&& || !
- 位运算符:& | ^ - >> << >>>
- 条件运算符: ? :
- 扩展赋值运算符:+= -= *= /=
举例
public class Demo04 {
public static void main(String[] args) {
//++ -- 自增 自减 一元运算符
int a = 3;
int b = a++;
int c = ++a;
System.out.println(a); //5
System.out.println(b); //3
System.out.println(c); //5
}
}
package operator;
public class Demo02 {
public static void main(String[] args) {
//与 或 非
boolean a = true;
boolean b = false;
System.out.println("a && b: "+ (a && b));
System.out.println("a || b: "+ (a || b));
System.out.println("!b: "+(!b));
//短路运算
int c = 5;
boolean d = (c<4)&&(c++<4);
System.out.println(d);
System.out.println(c);
}
}
package operator;
public class Demo03 {
public static void main(String[] args) {
int a = 10;
int b = 20;
a+=b; //a = a+b
System.out.println(a);
//字符串连接符 + ,加号边上有string类型,就都变成string
System.out.println(a+b);
System.out.println(""+a+b);
System.out.println(a+b+"");
}
}
三元运算符
package operator;
//三元运算符
public class Demo05 {
public static void main(String[] args) {
//x ? y : z
//如果x是true,结果为y,否则结果为z
int score = 80;
String type = score <60 ? "不及格":"及格";
System.out.println(type);
}
}
包机制
-
为了更好地组织类,java提供了包机制,用于区别类名的命名空间
-
包语句的语法格式为:
package pkg1[. pkg2[. pkg3...]];
-
一般利用公司域名倒置作为包名
-
为了能够使用某一个包的成员,我们需要在java程序中明确导入该包。使用import语句可以完成此功能
import package1[.package2...].(classname|*);
JavaDoc
- javadoc命令是用来生成自己API文档的
- 参数信息
- @author 作者名
- @version 版本号
- @since 指明需要最早使用的jdk版本
- @param 参数名
- @return 返回值情况
- @throws 异常抛出情况
package operator;
/**
* @author goldtree
* @version 1.0
* @since 1.8
*/
public class Doc {
String name;
/**
*
* @param name
* @return
* @throws Exception
*/
public String test(String name) throws Exception{
return name;
}
}
D:\3_doc\java\code\JavaSE\Java_Basic_Syntax\src\main\java\operator>javadoc -encoding UTF-8 -charset UTF-8 Doc.java
正在加载源文件Doc.java...
正在构造 Javadoc 信息...
标准 Doclet 版本 1.8.0_202
正在构建所有程序包和类的树...
正在生成.\operator\Doc.html...
Doc.java:14: 警告: @param 没有说明
* @param name
^
Doc.java:15: 警告: @return 没有说明
* @return
^
Doc.java:16: 警告: @throws 没有说明
* @throws Exception
^
正在生成.\operator\package-frame.html...
正在生成.\operator\package-summary.html...
正在生成.\operator\package-tree.html...
正在生成.\constant-values.html...
正在构建所有程序包和类的索引...
正在生成.\overview-tree.html...
正在生成.\index-all.html...
正在生成.\deprecated-list.html...
正在构建所有类的索引...
正在生成.\allclasses-frame.html...
正在生成.\allclasses-noframe.html...
正在生成.\index.html...
正在生成.\help-doc.html...
3 个警告
Java流程控制
用户交互Scanner对象
-
java提供一个工具,可以获取用户的输入。java.util.Scanner是java5的新特性
-
基本语法:
Scanner s = new Scanner(System.in);
-
通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据
package control;
import java.util.Scanner;
public class Demo_scanner {
public static void main(String[] args) {
//创建一个扫描器对象,用于接受键盘数据
Scanner scanner = new Scanner(System.in);
System.out.println("请输入内容: ");
//判断用户有没有输入字符串
if(scanner.hasNextLine()){
//使用next方式接收数据
//String str = scanner.next();
String str = scanner.nextLine();
System.out.println("输入的内容是: "+str);
}
else{
System.out.println("没有输入内容");
}
//凡是属于IO流的类,用完就关,要不占用资源
scanner.close();
}
}
- next():
- 一定要读取到有效的字符后才可以结束输入
- 对输入有效字符之前遇到的空白,next()会自动将其去掉
- 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
- next()不能得到带有空格的字符串
- nextLine():
- 以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符
- 可以获得空白
Scanner进阶使用
package control;
import java.util.Scanner;
public class Demo_scanner_pro {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//从键盘接收数据
int i = 0;
float f = 0.0F;
System.out.println("请输入整数: ");
if(scanner.hasNextInt()){
i = scanner.nextInt();
System.out.println("整数数据: " + i);
}else {
System.out.println("输入的不是整数数据。。。。");
}
System.out.println("请输入小数: ");
if(scanner.hasNextFloat()){
f = scanner.nextFloat();
System.out.println("小数数据: " + f);
}else {
System.out.println("输入的不是整数数据。。。。");
}
scanner.close();
}
}
举例
package control;
import java.util.Scanner;
public class Demo_scanner_Exp {
public static void main(String[] args) {
//我们可以输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束并输出执行结果
Scanner scanner = new Scanner(System.in);
//和
double sum = 0;
//个数
int num = 0;
while(scanner.hasNextDouble()){
double d = scanner.nextDouble();
sum = sum + d;
num = ++num;
}
System.out.println(num + "个数的和是: "+ sum);
System.out.println(num + "个数的平均值是: "+ sum/num);
scanner.close();
}
}
顺序结构
- JAVA的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行
- 顺序结构是最简单的算法结构
- 语句与语句之间,框与框之间是按照从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的
IF 选择结构
- if单选结构
- if双选结构
- if多选结构
- 嵌套的if结构
- switch多选择结构
if单选结构
package control;
import java.util.Scanner;
public class Demo_if {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine();
if(s.equals("hello")){
System.out.println(s);
}
System.out.println("not hello");
scanner.close();
}
}
if双选择结构
package control;
import java.util.Scanner;
public class Demo_if_else {
public static void main(String[] args) {
//考试分数大于60,显示及格,否则显示不及格
Scanner scanner = new Scanner(System.in);
System.out.println("请输入考试成绩: ");
double score = scanner.nextDouble();
if(score>=60){
System.out.println("恭喜你,及格了");
}else {
System.out.println("不及格");
}
scanner.close();
}
}
if多选结构
package control;
import java.util.Scanner;
public class Demo_if_elseif {
public static void main(String[] args) {
//if的多选择结构
Scanner scanner = new Scanner(System.in);
System.out.println("请输入考试分数: ");
int score = scanner.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 if (score < 60 ){
System.out.println("不及格");
}else
System.out.println("分数异常");
scanner.close();
}
}
if的嵌套结构
if(){
if(){
}
}
switch多选择结构
- 多选择结构还有一个实现方式就是switch case语句
- switch case 语句判断是一个变量与一些列值中某个值是否相等,每个值称为一个分支
- switch语句中的变量类型可以是
- byte short int 或者 char
- 从java SE 7 开始
- switch支持字符串String类型
- 同时case标签必须为字符串常量或
package control;
import java.util.Scanner;
public class Demo_switch {
public static void main(String[] args) {
System.out.println("请输入你买的东西名称: ");
Scanner scanner = new Scanner(System.in);
String wares = scanner.nextLine();
switch (wares){
case "apple":
System.out.println("你买了" + wares);
break;
case "perl":
System.out.println("你买了" + wares);
break;
case "orange":
System.out.println("你买了" + wares);
break;
default:
System.out.println("你买了别的");
}
scanner.close();
}
}
循环控制
- while循环
- do...while 循环
- for 循环
- java5中引入了一种主要用于数组的增强型for循环
while循环
- while是最基本的循环
- 只要布尔表达式为true,循环就会一直执行下去
- 我们大多数情况是会让循环停止下来,我们需要一个让表达式失效的方式让循环停下来
- 少部分情况需要循环一直执行,比如服务器的请求响应监听等
- 循环条件一直为true就会造成无限循环
package control;
public class Demo_While {
public static void main(String[] args) {
int i = 0;
int sum = 0;
while (i < 100){
i++;
sum = sum + i;
}
System.out.println(sum);
}
}
do...while循环
- 对于while语句而言,如果不满足条件,则不能进入循环。但是有时候我们需要即使不满足条件,也至少执行一次。
- do...while循环和while循环相似,不同的是,do...while循环至少会执行一次
- while和do...while的区别:
- while先判断后执行。do...while是先执行后判断
- do...while总是保证循环体会被至少执行一次。
package control;
public class Demo_Dowhile {
public static void main(String[] args) {
int i = 0;
int sum = 0;
do{
i++;
sum = sum + i;
}while (i < 100);
System.out.println(sum);
}
}
while和dowhile区别
package control;
public class Demo_DiffWhileDowhile {
public static void main(String[] args) {
int i = 0;
while(i < 0 ){
System.out.println(i);
}
System.out.println("=====================");
do{
System.out.println(i);
}while (i < 0);
}
}
For循环
- 虽然所有循环结构都可以用while或者do...while表示,但java提供了另一种语句。for循环,使一些循环结构变得更简单。
- for循环语句是支持迭代的一种通用结构,是最有效,最灵活的循环结构
- for循环执行的次数是在执行前就确定的
练习1
package control;
public class Demo_For_1 {
public static void main(String[] args) {
//0-100内奇数和以及偶数和
int oddsum = 0;
int evensum = 0;
for (int i = 0; i <= 100; i++) {
if (i%2 != 0){
oddsum = oddsum + i;
}else {
evensum = evensum + i;
}
}
System.out.println("oddsum: "+oddsum);
System.out.println("evensum: "+evensum);
}
}
练习2
package control;
public class Demo_For_2 {
public static void main(String[] args) {
//输出0-1000中能被5整除的数,每行输出三个
for (int i = 0; i <= 1000; i++) {
if(i%5 == 0){
System.out.print(i+"\t");
}
if(i%(5*3) == 0){
System.out.println();
//System.out.print("\n");
}
}
}
}
练习3
package control;
public class Demo_For_99 {
public static void main(String[] args) {
//打印99乘法表
for (int i = 1; i < 10; i++) {
for (int j = 1; j < 10; j++) {
if (j < 9 ){
System.out.print(i*j + "\t");
}
if (j == 9 ){
System.out.println(i*j + "\t");
}
}
}
}
}
or
package control;
public class Demo_For_99 {
public static void main(String[] args) {
//打印99乘法表
for (int i = 1; i < 10; i++) {
for (int j = 1; j <= i; j++) {
if (j < i ){
System.out.print(i*j + "\t");
}
if (j == i ){
System.out.println(i*j + "\t");
}
}
}
}
}
or
package control;
public class Demo_For_99 {
public static void main(String[] args) {
//打印99乘法表
for (int i = 1; i < 10; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(i*j + "\t");
}
System.out.println();
}
}
}
增强for循环
package control;
public class Demo_for_enhence {
public static void main(String[] args) {
int[] number = {10,20,30,40,50};
for(int x:number){
System.out.print(x+"\t");
}
}
}
break continue
- break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。
- continue语句用在循环语句体中,用于终止某次循环过程,即跳出本次循环。
流程控制练习
package control;
public class Demo_triangle {
public static void main(String[] args) {
//打印一个三角形
for (int i = 1; i <= 5; i++) {
for (int j = 5; j >= i ; j--) {
System.out.print(" ");
}
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
for (int j = 1; j < i; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
标签:java,入门,int,System,String,println,public,out
From: https://www.cnblogs.com/goldtree358/p/16999067.html