main方法快捷键:psvm
输出快捷键:sout
Hello World! 仪式
public class demo01 {
public static void main(String[] args) {
System.out.println("Hello World!");
System.out.println("你好,世界!");
}
}
Java的main方法
这里学习了命名规范,以及Java中main方法的书写
public class demo01 {
public static void main(String[] args) {
/*
//大小写敏感
String a ="zhouql";
String A ="zhouql";
//规范
String 1a ="zhouql";
String Av ="zhouql";
String $ ="zhouql";
String $1 ="zhouql";
String _ ="zhouql";
String _1 ="zhouql";
String 1_ ="zhouql";
String -asd ="zhouql";
//不能使用关键字作为变量名或方法名
String clas ="zhouql";
String class ="zhouql";
*/
}
}
基本数据类型
package base;
public class demo02 {
public static void main(String[] args) {
//八大基本数据类型
//整型
int num1 = 10; //最常用
//范围在100多
// byte num2 = 200;
//short
short num3 = 20;
//long
long num4 = 40L; //Long类型在数字后面加个L表示是long类型
//float 浮点数:小数
float num5 = 12.3F; //float类型加F,否则就报错
double num6 = 3.14159;
//字符
char name1 = 'a';
// char name2 = 'as'; //字符是一个
//字符串
//String 不是关键字,是一个类
String num7 = "asd";
//布尔值
boolean flag = true; //真
boolean fla = false; //假
}
}
强制转换以及转义
public class demo03 {
public static void main(String[] args) {
int i=10;
int i1=010;//ba jin zhi
int i2=0x10;//shi liu jin zhi
System.out.println(i);
System.out.println(i1);
System.out.println(i2);
System.out.println("===================================================");
float f=0.1f;
double d=1.0/10;
System.out.println(f==d);
System.out.println(f);
System.out.println(d);
System.out.println("===================================================");
float a=231313123123123189f;
float b=a+1;
System.out.println(a==b);
System.out.println("====================================================");
char c1='a';
System.out.println("强制转换");
System.out.println((int)c1);
System.out.println((int)'A');
System.out.println("====================================================");
System.out.println("转义字符");
System.out.println("Hello\tWorld!");
System.out.println("Hello\nWorld!");
}
}
新特性
public class demo06 {
public static void main(String[] args) {
//JDK新特性,方便看
int money = 10_0000_0000;
System.out.println(money);
int years = 20;
System.out.println(money*years);
System.out.println("-----------------------------");
long sum = money*((long)years);
System.out.println(sum);
}
}
命名再认识
public class demo07 {
//static 是修饰符,不区分前后
//final 只能读不能修改,不能改变的就定义成常量
static final double PI = 3.1415926;
public static void main(String[] args) {
System.out.println(PI);
}
}
//命名规范
/*
* 1,见名之意
* 2,类成员变量驼峰原则
* 3,局部变量首字母小写和驼峰原则
* 4,常量大写和下划线
* 5,类名首字母大写和驼峰
* 6,方法名首字母小写和驼峰
* */
类变量,局部变量,实例变量
package base;
public class demo08 {
//类变量 static
static double salary = 20000;
//实例变量:从属于对象
//实例变量,不初始化,默认值,除了基本类型,其他都是null,布尔值默认是false
String name;
int age;
//main方法
public static void main(String[] args) {
//局部变量;必须声明和初始化值
int i = 10;
System.out.println(i);
//变量类型 变量名 变量值
demo08 demo08 = new demo08();
System.out.println( demo08.age);
System.out.println( demo08.name);
//类变量 static
System.out.println(salary);
}
//其他方法
public void add(){
System.out.println();
}
}
运算符部分
加减乘除
public class Demo01 {
public static void main(String[] args) {
//二元运算符
int a = 10;
int b = 20;
int c = 30;
int d = 10;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/(double)b);
}
}
public class Demo02 {
public static void main(String[] args) {
long a = 12345678L;
int b = 123;
short c = 10;
byte d = 2;
System.out.println(a+b+c+d);//long
System.out.println(b+c+d);//int
System.out.println(c+d);//int
}
}
模运算(重点体会)
public class Demo03 {
public static void main(String[] args) {
//关系
int a = 10;
int b = 20;
int c = 21;
//取余shu,模运算
System.out.println(c/b);
System.out.println(a>b);
System.out.println(a<b);
System.out.println(a==b);
System.out.println(a!=b);
}
}
自增自减
public class Demo04 {
public static void main(String[] args) {
//一元运算符 ++ 自增 -- 自减
int a = 3;
int b =a++;//执行完这行代码后,先给b值,是3,然后在自增a的值,此时a是4
System.out.println(a);
int c = ++a;//执行完这行代码前,先自增a的值,此时a是5,然后在赋值
//简单说a++先赋值后递增 ++a先递增后赋值
System.out.println(a);
System.out.println(b);
System.out.println(c);
//幂运算
double pow = Math.pow(3,4);
System.out.println(pow);
}
}
逻辑运算
public class Demo05 {
public static void main(String[] args) {
//与(and) 或(or) 非(no)
boolean a = true;
boolean b = false;
System.out.println(a && b);
System.out.println(a || b);
System.out.println(!(a && b));
//短路运算
System.out.println("===================");
int c = 5;
boolean d = (c<4) && (c++<4);
System.out.println(d);
System.out.println(c);
}
}
位运算(目前了解即可)
public class Demo06 {
public static void main(String[] args) {
/*
* A = 0011 1100
* B = 0000 1101
*
* A&B = 0000 1100 两个都是1才为1,否则就是0
* A|B = 0011 1101 都是0,才为0,有一个1,直接为1
* A^B = 0011 0001 相同为0,不相同为1
* ~B = 1111 0010 取反
*
*
* >>右移 *2 <<左移 /2
* 效率极高
* 0000 0000 0
* 0000 0001 1
* 0000 0010 2
* 0000 0011 3
* 0000 0100 4
*
* 0001 0000 16
* ……
* */
}
}
小拓展
public class Demo07 {
public static void main(String[] args) {
int a = 10;
int b = 20;
a+=b;
a-=b;
System.out.println(a);
System.out.println(a+b);
//字符串连接 String
System.out.println(""+a+b);
System.out.println(a+b+"");
}
}
获取数据输入,简单交互,类似C语言scanf
注意一点,IO流使用完记得释放
import java.util.Scanner;
import static java.lang.System.in;
public class Demo01 {
public static void main(String[] args) {
//创建一个扫描器对象。用来接受键盘数据
Scanner scanner = new Scanner(System.in);
System.out.println("使用next方式接收");
if(scanner.hasNext()){
String str = scanner.next();
System.out.println("输入的内容为"+str);
}
import java.util.Scanner;
public class Demo02 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("输入,nextline");
if(scanner.hasNextLine()){
String s = scanner.nextLine();
System.out.println(":"+s);
}
scanner.close();
}
}
import java.util.Scanner;
public class Demo03 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("输入");
String str = scanner.nextLine();
System.out.println("输入的是:"+str);
scanner.close();
}
}
mport java.util.Scanner;
public class demo04 {
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("输入的不是整数");
}
scanner.close();
}
}
import java.util.Scanner;
public class Demo05 {
public static void main(String[] args) {
int score = 0 ;
Scanner scanner = new Scanner(System.in);
System.out.println("请输入成绩,童鞋");
int s = scanner.nextInt();
if(s>=60 && s<=100){
System.out.println("恭喜,没挂科");
}else if(s>=0 && s<60){
System.out.println("额,你懂");
}else{
System.out.println("不是整数");
}
scanner.close();
}
}
public class Demo06 {
public static void main(String[] args) {
char grade = 's';
switch (grade){
case 'a':
System.out.println("优秀");
break;
case 'b':
System.out.println("良好");
break;
case 'c':
System.out.println("及格");
break;
case 'd':
System.out.println("再接再厉");
break;
default:
System.out.println("未知等级");
}
}
}
public class Demo07 {
//JDK7开始支持字符,字符的本质还是数字
//反编译 java---class(字节码文件)-----反编译(IDEA)
public static void main(String[] args) {
String name = "小张";
switch (name){
case "刘森":
System.out.println("刘森");
break;
case "小张":
System.out.println("小张");
break;
default:
System.out.println("弄啥嘞");
}
}
}
循环
public class Demo01 {
public static void main(String[] args) {
int i = 0;
while(i<100){
System.out.println(i);
i++;
}
}
}
public class Demo02 {
public static void main(String[] args) {
int i = 0;
int sum = 0;
while (i<=100){
sum+=i;
i++;
}
System.out.println(sum);
}
}
public class Demo03 {
public static void main(String[] args) {
int i = 0;
int sum = 0;
do {
sum+=i;
i++;
}while (i<=100);
//注意分号
System.out.println(sum);
}
}
public class Demo04 {
public static void main(String[] args) {
int a = 0;
while (a<0){
System.out.println(a);
a++;
}
System.out.println("======================");
do{
System.out.println(a);
a++;
}while (a<0);
}
}
public class Demo05 {
public static void main(String[] args) {
int sum = 0;
for (int i = 1;i<=100;i++){
sum+=i;
System.out.println(i);
}
System.out.println(sum);
}
}
//死循环
//for(;;)
public class Demo06 {
public static void main(String[] args) {
int a = 0;
int b = 0;
for (int i = 0; i < 100; i++) {
if(i%2==0){
a+=i;
}else{
b+=i;
}
}
System.out.println("偶数和是:"+a);
System.out.println("ji数和是:"+b);
}
public class Demo07 {
public static void main(String[] args) {
int i = 0;
while (i<=1000){
i++;
if(i%5==0){
System.out.print(i+"\t");
}
if(i%(15)==0){
System.out.println();
}
}
}
}
//输出完会换行 println
//输出完不会换行 print
99乘法表
public class Demo08 {
public static void main(String[] args) {
for (int i = 1;i<=9;i++){
for (int j = 1;j<=i;j++){
System.out.print(i+"*"+j+"="+(i*j)+'\t');
}
System.out.println();
}
}
}
package 循环;
//JDK5,重点循环数组和集合
public class Demo09 {
public static void main(String[] args) {
int[] numbers = {10,20,30,40,50,60};
//便利数组的元素
for (int x:numbers){
System.out.println(x);
}
}
}
//continue;跳过某次循环(妹子)
//break;强制推出循环(凶)
public class Demo10 {
public static void main(String[] args) {
int i = 0;
while (i<100){
i++;
if(i>50&&i<60){
continue;
}
System.out.println(i);
}
}
}
//打印101~150的质数
//质数大于1的自然数中,除了1和它本身以外不在有其他因数的自然数
public class Demo11 {
public static void main(String[] args) {
int i = 0;
outer:for (int a = 101;a<150;a++){
for(int b = 2;b<a/2;b++){
if(a%b ==0){
continue outer;
}
}
System.out.print(a+" ");
}
}
}
public class Demo12 {
public static void main(String[] args) {
for (int i = 0; i <=5; i++) {
for (int j = 5; j >=i ; j--) {
System.out.print(" ");
}
for (int j = 0; j <=i ; j++) {
System.out.print("*");
}
for (int j = 0; j < i; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
方法
个人理解Java的方法可以与C的核心函数理解一致
在main外写方法,叫着不舒服,可以暂时叫函数,保证main函数的整洁,其次就是在main方法中的调用,后来你会发现,它不仅仅用在main中……
public class Demo01 {
//main方法
public static void main(String[] args) {
int add = add(1,5);
System.out.println(add);
print();
System.out.println(max(3,3));
}
//假发
public static int add (int a,int b){
return a+b;
}
//void
public static void print(){
System.out.println("Hello World!");
}
//最大值
public static int max(int a,int b){
int c = a>b?a:b;
return c;
//1.返回值
//2.种植方法
}
}
方法重构,就是一个方法,假设我比较大小的方法,小明需要比较两个数的大小,小红需要比较三个人的方法,这是只需要重新写一个名字一样,参数不一样,实现过程不一样就实现了函数的重构
public class Demo02 {
public static void main(String[] args) {
System.out.println(max(2.6,4.8,3.6));
}
public static int max(int a,int b){
int c = a>b?a:b;
return c;
}
public static double max(double a,double b){
double c = a>b?a:b;
return c;
}
public static double max(double a,double b,double c){
if(a>b){
return a;
}else if(b>c){
return b;
}else{
return c;
}
}
}
可变长参数
public class Demo03 {
public static void main(String[] args) {
Demo03 demo03 = new Demo03();
demo03.test(1,234,45,4,6);
}
public void test(int... i){
System.out.println(i[0]);
System.out.println(i[1]);
System.out.println(i[2]);
System.out.println(i[3]);
System.out.println(i[4]);
}
}
public class Demo04 {
public static void main(String[] args) {
printMax(34,56,34,78,89);
printMax(new double[]{1,2,34});
}
public static void printMax(double... numbers){
if(numbers.length == 0){
System.out.println("没有输入");
return;
}
double result = numbers[0];
for(int i = 1; i<numbers.length;i++){
if(numbers[i]>result){
result = numbers[i];
}
}
System.out.println("the max value is "+result);
}
}
递归,简单说就是传递乌龟,哈哈
就是自己调用自己,自己返回给自己
//递归头
//递归体
public class Demo05 {
public static void main(String[] args) {
Demo05 demo05 = new Demo05();
demo05.test();
}
public void test(){
test();
}
}
实例,计算n地阶乘
public class Demo06 {
public static void main(String[] args) {
int c = f(4);
System.out.println(c);
}
public static int f(int n){
if(n == 1){
return 1;
}else {
return n*f(n-1);
}
}
}
值得注意地是,Java语言用地栈机制,而递归操作,需要大量的计算机资源,往往面对稍大地需求,Java预置的空间根本不够递归完,所以谨慎使用,不过要理解递归,感受递归之美!!!快来手撕代码吧