• Java
  • 初识Java的main方法
  • 用Sublime Text3编译运行
    • 如何编译
    • 程序运行原理
  • 程序需注意的问题
    • 没有out文件
  • args
  • 注释与打印
  • 变量与类型
    • 类型特性
    • 变量类型
    • 常量
  • 类型转换与整型提升
  • 运算符
  • 逻辑控制
  • 快捷键

Java

Java - 爪哇岛 盛产咖啡
Java之父 —— 高斯林

Write Once. Run anywhere.
一次运行,到处运行

环境:

JDK - Java开发者工具

IDEA - 集成开发环境


初识Java的main方法

public class HelloWorld {public statci void main(String[] args) { // Java中main函数的固定写法System.out.println("hello");}
}



用Sublime Text3编译运行

如何编译



程序运行原理

JDK:Java开发者工具

JRE:Java运行环境

JVM:Java虚拟机

一次编译,到处运行,只要你安装了JDK



程序需注意的问题

1、每次写完代码,必须保存,然后重新编译!!2、如果这个类是public修饰的,类名需要和文件名一致`public class HelloWorld`3、方法需在类里 --> 类(方法)4、不是一个文件对应一个字节码,而是一个类对应一个字节码​  好处:用到哪个类,加载哪个类,而不是全加载!

没有out文件



args


数组越界:



注释与打印

三种注释方法:

/*** 文档注释 --> 类或方法的前面*/public class HelloWorld {public static void main(String[] args) {for(int i = 0; i< args.length; i++) {// System.out.println(args[i]); 行注释/* 块注释System.out.println(args[0]);System.out.println(args[1]);System.out.println(args[2]);System.out.println(args[3]);*/}System.out.println("hello");}
}

运行此代码产生错误问题:


javac 在编译的时候,默认用GDK格式编译代码,

解决方法:javac -encoding utf-8 HelloWorld.java


打印方法:

public class HelloWorld {public static void main(String[] args) {for(int i = 0; i< args.length; i++) {System.out.print("打印不换行");System.out.println("打印换行");System.out.printf("%d\n", 10);// 打印不换行打印换行// 10}
}


变量与类型

类型特性

1、int 多少字节?

int 4字节,无关多少位系统 — 可移植性高

Linux Mac Win 可要有字节码文件,就能编译 — 跨平台

public class HelloWorld {/*** int 4字节* @param args [description]*/public static void main(String[] args) {int a = 10;}}

2、有无符号?

Java 中的 int,没有所谓的无符号类型,统一是有符号的

public class HelloWorld {    public static void main(String[] args) {int a = 10;System.out.println(a); // 10}
}

3、取值范围?

  1. 最高位为有符号位,剩余31位是数值位

    这31位可表示 2^31 = 2,147,483,648 个数值

  2. int 取值范围:-2^31 -> 2^31-1

    -2147483648 — 0 — 2147483647

public class HelloWorld {    public static void main(String[] args) {int a = 10;System.out.println(a); // 10// Integer - 包装类 是int的plus版本System.out.println(Integer.MAX_VALUE); // 2147483647System.out.println(Integer.MIN_VALUE); // -2147483648}
}


变量类型

1、变量命名

小驼峰:以(数字 字母 下划线 美元符号)组成,不能以数字开头

public class HelloWorld {    public static void main(String[] args) {int maxMax = 10;int max_num = 10;int $max3num = 10;int ___________ = 100; // 可以,但不要用System.out.println(___________); // 100int 钱 = 300;System.out.println(钱); // 300// Unicode字符集:包含中文,固可使用}
}

2、变量能否不初始化?

Java 比较安全,如果不初始化就使用,编译器就会报错,不是警告!

int num; // err


3、long 长整形

8bit 64bit

long 的最大最小值:-2^63 2^63-1

取值范围:

public class HelloWorld {    public static void main(String[] args) {long a = 10L;System.out.println(Long.MAX_VALUE); // 9223372036854775807System.out.println(Long.MIN_VALUE); // -9223372036854775808}
}

4、双精度浮点型变量

注意问题1:


注意问题2:

小数本身是没有一个精准的数字的,只能精确到几位

public class HelloWorld {    public static void main(String[] args) {double num = 1.1;System.out.println(num*num); // 1.2100000000000002}
}

5、单精度浮点型变量

public class HelloWorld {    public static void main(String[] args) {float f = 10.5;System.out.println(f);// 报错: 不兼容的类型: 从double转换到float可能会有损失// 正确写法:float f = 10.5f;}
}

6、 字符类型变量

public class HelloWorld {    public static void main(String[] args) {char ch1 = 'a';System.out.println(ch1); // achar ch2 = '数';System.out.println(ch2); // 数}
}

汉字2字节,代码无问题,由此可得 char 区别于C语言是2字节
在C语言中使用ASCII 表示字符,在Java 中使用Unicode 表示字符,表示的字符种类更多,包括中文


7、 字节类型

public class HelloWorld {    public static void main(String[] args) {byte b = 10; // 1字节 相当于C中的charSystem.out.println(b1); // 10}
}

字节类型取值范围:

public class HelloWorld {    public static void main(String[] args) {byte b1 = 130; // errSystem.out.println(b2); // 错误: 不兼容的类型: 从int转换到byte可能会有损失byte b2 = 127; // ok}
}

1字节 --> 8bit 最高位符号位,7位数值位

-2^7 - 2^7-1

-128 - 127


8、短整型

public class HelloWorld {   public static void main(String[] args) {short s = 10; // 2字节// -2^16 - 2^16-1}
}

9、布尔类型

在Java中,boolean只有两种取值,true真,false假
注:在JVM的规范中,没有规定布尔类型的大小,
布尔类型变量不能±,因为不是数值

public class TestDemo {public static void main(String[] args) {boolean flag = false;System.out.println(flag);}
}

10、字符串类型-(引用类型)

public class TestDemo {public static void main(String[] args) {String str = "hello";System.out.println(str);}
}

注意问题:

public class TestDemo {public static void main(String[] args) {System.out.println("hello"+"world"); // helloworldSystem.out.println("hello"+10+20); // hello1020// 其他数据类型和字符串使用加号拼接,结果就是一个字符串System.out.println(10+20+"hello"); // 30helloSystem.out.println("hello+(10+20)"); // hello+(10+20)System.out.println(10+""+20+"hello"); // 1020helloSystem.out.println("a = "+10+", b = " +20); // a = 10, b = 20/**                         整数   byte short int long*                         浮点数 float double*          基本数据类型    字符   char*                         布尔   boolean* 数据类型*          引用类型        String  数组 类 接口 枚举……* */// 转义字符System.out.println("\"bit\""); // "bit"// 水平制表符\t - Tab键}
}


常量

public class TestDemo {public static void main(String[] args) {// 常量:// 1.字面值常量// 2.final修饰的变量 ->常量// 程序编译时,就已经确定值// 只能初始化一次// 11、变量:// 程序运行的时候们可以改变的量final int a = 10;// a = 20; // err}
}


类型转换与整型提升

强制类型转换

public class TestDemo {public static void main(String[] args) {int a = 10;long b = a; // okSystem.out.println(b);long d = 12;// int c = d; // err 报错(强类型语言)int c = (int)d; // 强制类型转换(有风险)// boolean不能boolean n = true;// int t = (int)n; // err// int->bytebyte num1 = 1;byte num2 = 2;byte sum = (byte)(num1 + num2); // 强制类型转换byte num3 = 1+2; // 1和2都是常量,在程序编译时,已经被编译为3了  --byte num3 = 3;}
}

整型提升

public class TestDemo {public static void main(String[] args) {// 整形提升:小范围提升为大范围,效率高// byte放int// byte a = 128; // err  -128  127byte a = 1;byte b = 2;byte c = (byte)(a + b); // 小于4 提升System.out.println(c);int num1 = 10;long num2 = 10;int sum = (int)(num1+num2);}
}

int 和 String 之间的相互转换

public class TestDemo {public static void main(String[] args) {int num = 10;String ret = String.valueOf(num); // int->StringSystem.out.println(ret); // 10// String->intString str = "123";int ret2 = Integer.valueOf(str);System.out.println(ret+1); //}
}


运算符

1、算术运算符

public class TestDemo {public static void main(String[] args) {// %int a = 10;int b = 0;// System.out.println(a/b); // 抛出异常 程序结束 by zero-算术异常System.out.println("xxxxxxxxxxx"); // 不打印System.out.println(10 % 3); // 1System.out.println(-10 % 3); // -1System.out.println(10 % -3); // 1System.out.println(-10 % -3); // -1}
}

2、增量赋值运算符 += -= ……

public class TestDemo {public static void main(String[] args) {short s = 10;// s = (short)(s+9);s += 9; // +=自动强制类型转换System.out.println(s);}
}

3、自增自减 ++ –

区分前置(先++后使用),后置(先使用后++)


4、关系运算符 == != < > <= >=

关系运算符表达式结果是波尔值
if(布尔表达式)

public class TestDemo {public static void main(String[] args) {int i1 = 10;int i2 = 20;System.out.println(i1 == i2); // falseSystem.out.println(i1 != i2); // true}
}

5、逻辑运算符

public class TestDemo {public static void main(String[] args) {// 5、逻辑运算符// 逻辑与 &&// 表达式1 && 表达式2 --> 此2表达式都是布尔表达式// 短路:如果表达式1为假,就不执行表达式2// 逻辑或 ||// 表达式1 || 表达式2 --> 此2表达式都是布尔表达式// 短路:如果表达式1为真,就不执行表达式2// 逻辑非 !int a = 10;int b = 20;System.out.println(!!(a<b)); // trueSystem.out.println(10<20 && 10/0 == 0); // 短路System.out.println(10<20 || 10/0 == 0); // 短路}
}

6、位运算符

按位与&   -- 对应为都是1,结果是1
按位或|   -- 有1就是1
按位异或^ --  相同为0,相异为1
按位取反~ -- 0变1,1变0

7、移位运算符

<< >> >>> 都是按二进制位移
左移 右边补0 相当于原数字*2的N次方
右移 左边补符号位 相当于原数字/2的N次方0000 1011>>1     0000 0101

8、条件运算符

public class TestDemo {public static void main(String[] args) {int a = 10;int b = 20;int max = a > b ? a : b; // 表达式1为布尔表达式}
}


逻辑控制

选择结构,循环结构,循序结构

1、分支语句

public class TestDemo {public static void main(String[] args) {// if...else// 1. 判断一个数是不是奇数Scanner scanner = new Scanner(System.in); // 从键盘获取数据// import java.util.Scanner; --> Alt_回车int n = scanner.nextInt();if( n % 2 == 0) {System.out.println("偶数");} else {System.out.println("奇数");}// 输入字符串String str = scanner.nextLine();// String str = scanner.next(); // 遇到空格结束System.out.println(str);// 有整数和字符串输入,要先读取字符串}
}

判断闰年

public class TestDemo {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int year = scanner.nextInt();// 1if(year % 100 == 0) {if(year % 400 == 0) {System.out.println(year+"是闰年!");}else {System.out.println(year+"不是闰年!");}}else {if(year % 4 == 0) {System.out.println(year+"是闰年!");}else {System.out.println(year+"不是闰年!");}}// 2if(year % 100 == 0 && year % 400 == 0) {System.out.println(year+"是闰年!");}else {if(year % 4 == 0) {System.out.println(year+"是闰年!");}else {System.out.println(year+"不是闰年!");}}// 3if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {System.out.println(year+"是闰年");}else {System.out.println(year+"不是闰年");}}
}

2、switch语句

不能用作switch参数的类型:long float double boolean
只能是整数,字符,字符串,枚举(JDK1.5开始,引入枚举,枚举也可作为switch参数)


3、循环结构

public class TestDemo {public static void main(String[] args) {// idea 如何调试 --> 甲壳虫/右击debug// debug -> 观察代码是怎么一步一步执行的int i = 0;int sum = 0;while(i<=5) { // 布尔表达式sum += i;i++;}System.out.println(sum);}
}


求阶乘

public class TestDemo {public static void main(String[] args) {int n = 5;int i = 1;int ret = 1;while(i <= n) {ret *= i;i++;}System.out.println(ret); // 120
}

求阶乘和

public class TestDemo {public static void main(String[] args) {int j = 1;int sum = 0;while(j <= 5) {int i = 1;int ret = 1;while (i <= j) {ret *= i;i++;}sum = sum + ret;j++;}System.out.println(sum);
}

continue

public class TestDemo {public static void main(String[] args) {// 既能被3整除,也能被5整除int i = 1;while(i <= 100) {if(i % 15 != 0) {i++;continue;}System.out.println(i);i++;}}
}

3、for

public class TestDemo {public static void main(String[] args) {// 快捷方式:fori回车for (;true;) {System.out.println("111"); // 死循环}}

/**
* Created with IntelliJ IDEA.
* Description:
* User: ${USER}
* Date: ${YEAR}-${MONTH}-${DAY}
* Time: ${TIME}
*/


快捷键

Ctrl+Alt+I,将选中的代码进行自动缩进编排
快捷键:普通搜索替换:Ctrl+F和Ctrl+R;全局搜索替换:Ctrl+Shift+F和Ctrl+Shift+R;

WIN + AIT + INS 新建文件,可搜索

Ctrl + AIT + V 最近的变量输出

AIT + V 自动生成变量

JavaSE01、如何写一个Java代码相关推荐

  1. 怎么才能学好Java编程写好Java代码?

    动力节点Java培训最新上线Java实验班,等你来测试自己适不适合学习Java编程哦! 刚刚接触Java编程的朋友总会遇到一些情况,比如:跟着Java基础教程看过一遍后,自己写代码的时候却无从下手:写 ...

  2. 控制台编写JAVA程序教程_写一个java程序的步骤是什么?写java程序技巧

    写Java程序是要按照步骤来的,这样才能写好一个java程序,那么接下来,我们就来给大家讲解一下写一个java程序的步骤是什么? (1)创建Java项目:"FileàNewàProjectà ...

  3. 自己写一个java.lang.reflect.Proxy代理的实现

    前言 Java设计模式9:代理模式一文中,讲到了动态代理,动态代理里面用到了一个类就是java.lang.reflect.Proxy,这个类是根据代理内容为传入的接口生成代理用的.本文就自己写一个Pr ...

  4. 可以写一个表白代码吗

    当然可以!想写一个表白代码的话,可以使用一些编程语言,例如 Python.Java.C++ 等等.如果你不熟悉编程语言,不妨先学习一下基本语法再试试. 举个例子,这是一个使用 Python 语言编写的 ...

  5. 【JAVA基础】名词解释与第一个JAVA代码

    #JDK,KRE,JVM名词解释 JDK:Java Development Kit Java开发者工具 (只需要下载这个就好了,因为JDK包含JRE) JRE:Java Runtime Environ ...

  6. 写一个java微信支付的接口

    要写一个 Java 微信支付接口,需要以下几个步骤: 注册微信支付商户,获取微信支付商户号和密钥. 准备微信支付需要的相关参数,包括商户订单号.订单金额.订单描述等. 使用 Java 实现微信支付下单 ...

  7. 一起重新开始学大数据-java篇-DAY01-第一个java代码helloworld

    一起重新开始学大数据-java篇 -DAY01-第一个java代码helloworld 计算机: 按照指定程序,自动高速处理海量数据 计算机组成 硬件和软件组成 硬件: cpu:计算 内存:提供计算资 ...

  8. 手把手教你写一个Java的orm框架(4)

    开始准备生成sql 在上一篇里,我们已经取到了我们在生成sql语句中所需要的信息,这一篇里我们开始根据class来生成我们需要的sql.在这之前我们先确认几件事情 sql里的参数我们使用占位符的形式. ...

  9. 原来热加载如此简单,手动写一个 Java 热加载吧

    1. 什么是热加载 热加载是指可以在不重启服务的情况下让更改的代码生效,热加载可以显著的提升开发以及调试的效率,它是基于 Java 的类加载器实现的,但是由于热加载的不安全性,一般不会用于正式的生产环 ...

最新文章

  1. Docker Swarm Beta 发布,Docker 集群管理
  2. GitHub的AI程序员“抄袭”算法大神代码,连原版注释都抄上了
  3. 3.2计算机系统教案,计算机系统教案.ppt
  4. 计算机专业必须读的经典书籍
  5. [Deepin - Pycharm调试记录] Pyinstaller索引系统库问题
  6. Windows破解笔记-windows API中的SendMessage
  7. eureka注册中心之服务提供者
  8. 专访阿里云雁杨:因需求而进化,ECS云服务器追求弹性极致
  9. php安装sphinx扩展,安装php的sphinx扩展模块
  10. oracle安装失败 主机名_PeopleTool 8.58.04 安装
  11. 图像标注工具labelImg使用方法
  12. BZOJ2732[HNOI2012] 射箭
  13. 服务器内存傲腾基本参数信息,服务器装傲腾内存
  14. C语言--三次方程数值求解
  15. 翁恺c语言程序设计入门作业,程序设计入门——C语言
  16. NXP S32K146 CAN通讯 TJA1043(二)
  17. 如何解决苹果Mac电脑安装PS失败并出现错误代码131 182出现“错误代码107”解决办法
  18. 考研复试(控制工程专硕)及大学本科(物联网工程)知识点回顾(三)——模拟电子技术
  19. PS小知识(四)——影像出图调色及去除薄雾薄云
  20. 轨迹规划-贝塞尔曲线

热门文章

  1. aliyun gradle 代理_android studio gradle国内代理设置
  2. python3 global_Python3基础 global 在函数内部对全局变量进行修改
  3. 隐藏html文本节点,javascript-D3-仅显示/隐藏单击节点的文本
  4. c语言字符串怎么转为正数,把字符串转换为与之等价的整型值
  5. mysql 季度最后一天,MYSQL中取目前年份的第一天和当前周,月,季度的第一天/最后一天...
  6. 51单片机c语言计数程序,51单片机INTOINT1中断计数c语言源程序.doc
  7. [置顶] 手机通过socket控制电脑关机,重启,注销等功能
  8. 试用期间,云服务器操作系统可以更换吗?
  9. Objective-C与JavaScript交互的那些事
  10. 关于iOS中MVC和MVVM的区别和联系