因为最近工作用到java,所以了解一些java的知识,当然这篇文章也是适用于有语言基础的,因为是用于快速熟悉java的一些语法规范,并没有整理细节的内容,零基础的不适合看这篇文章
老规矩先来hello world代码:
package study_java.ex01;
public class HelloWorld {
public static void main(String[] args){
System.out.println("hello world");
}
}
// 表示单行注释 /* */ 表示多行注释
Java关键字的特点: 组成关键字的字母全是小写 常碰到的关键字有:
Java中的名称规范:
不能改变的数值
整数常量 小数常量 布尔型常量 字符串常量 null常量
数据类型 变量名 = 初始化值
变量的作用范围,就是它所在的{}内部
自动类型转换也叫隐式类型转换 强制类型转换也叫显式类型转换
package study_java.ex01;
public class TypeConvert {
public static void main(String[] args){
byte b = 100;
int i = b; // 这里就是进行了隐式转换
byte b2 = (byte)i; // 这里是显式转换
System.out.println(b2);
}
}
表达式的数据类型自动提升: byte short char 提升到int
byte b3 = 3;
int x = 4;
x = x + b3; // b3会自动提升为int类型进行运算
System.out.println(x);
算术运算符
赋值运算
= += -= *= /= %=
比较运算符
逻辑运算符
位运算符
关于三元运算 实例代码:
package study_java.ex01;
public class IfDemo {
public static void main(String[] args){
int age = 100;
if(age <= 50){
System.out.println("小");
}
else{
System.out.println("大");
}
// 更改为三元运算
String str = age <= 50 ? "小":"大";
System.out.println(str);
}
}
switch语句特点: switch 语句只有四种类型的表达式:byte short int char
case 之间与default没有顺序,先执行第一个case,没有匹配的case执行default 结束switch语句有两种情况:遇到break, 执行到switch语句结束
如果匹配的case或者default没有对应的break,那么程序会继续向下执行,直到遇到break或者switch结束
代码例子:
package study_java.ex01;
public class SwitchDemo {
public static void main(String[] args){
char x = 1;
switch(x){
case 1:
System.out.println("x=1");
break;
case 2:
System.out.println("x=2");
break;
case 3:
System.out.println("x=3");
break;
default:
System.out.println("x=?");
break;
}
}
}
代码例子:
package study_java.ex01;
public class WhileDemo {
public static void main(String[] args){
int i = 0;
while (i <= 10) {
System.out.println(i);
i++;
}
}
}
代码例子2:
package study_java.ex01;
public class WhileDemo2 {
public static void main(String[] args){
int i = 1;
int sum =0;
while (i <= 100){
sum += i;
i += 1;
}
System.out.println(sum);
}
}
代码例子:
package study_java.ex01;
public class DoWhileDemo {
public static void main(String[] args){
int i = 1;
do {
System.out.println(i);
}while (i > 10);
}
}
代码例子:
package study_java.ex01;
public class ForDemo {
public static void main(String[] args){
for(int i = 0;i<10;i++){
System.out.println(i);
}
}
}
打印一个九九乘法表:
package study_java.ex01;
public class ForDemo3 {
public static void main(String[] args){
for(int i = 1;i < 10;i++){
for (int j = 1;j <= i;j++){
System.out.print(j + "*" + i + "=" + i*j + "\t");
}
System.out.println();
}
System.out.println();
for (int i = 9; i>0;i--){
for (int j = 1;j<=i;j++ ){
System.out.print(j + "*" + i + "=" + i*j + "\t");
}
System.out.println();
}
}
}
打印一个实心和空心的三角形
package study_java.ex01;
public class ForDemo4 {
public static void main(String[] args){
for(int i=1;i <= 5;i++){
for(int j = 1; j<=9;j++){
if (j <= 5-i){
System.out.print(" ");
}
else if (9-j < 5-i){
System.out.print(" ");
}
else {
System.out.print("*");
}
}
System.out.println();
}
System.out.println();
for(int i = 1;i<= 5;i++){
for(int j = 1;j<=9;j++){
if (i == 5){
System.out.print("*");
}
else if (j == 5-i+1){
System.out.print("*");
}
else if ( 9-j == 5-i){
System.out.print("*");
}
else {
System.out.print(" ");
}
}
System.out.println();
}
}
}
函数就是定义在类中的具有特定功能的一段独立小程序 函数也称为方法
修饰符 返回值类型 函数名称(参数类型 参数名称,...) { 执行语句; return 返回值; }
函数特点:
封装功能 重用 调用时才会被执行 对于函数没有具体的返回值的情况,返回值类型用关键字void表示,那么该函数中的return语句如果在最后一行可以省略不写
注意: 函数中只能定义调用函数,不可以在函数内部定义函数 定义函数时,函数的结果应该返回给调用者,交给调用者处理
一个简单的函数例子:
package study_java.ex01;
public class FunctionDemo1 {
public static void main(String[] args){
int res = add(10,20);
System.out.println(res);
}
public static int add(int a, int b){
return a + b;
}
}
通过阶乘的两种写法来理解,其实就是自己调用自己:
public static int fabric(int n) {
int res = 1;
for (int i=1;i<=n;i++){
res *= i;
}
return res;
}
public static int fabric2(int n) {
if (n == 1) {
return 1;
}
else {
return n * fabric2(n-1);
}
}
在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可
重载的特点: 与返回值类型无关,只看参数列表 例子代码:
package study_java.ex01;
public class FunctionDemo2 {
public static void main(String[] args){
add(10,3,2);
}
// add
public static int add(int a, int b){
return a+b;
}
// 重载add
public static int add(int a, int b, int c){
return a + b + c;
}
// 重载add
public static float add(int a, float b) {
return a + b;
}
// 重载add
public static float add(float a, int b) {
return a + b;
}
}
函数的可变参数:
public static int multiply(int... xyz){
int sum = 0;
for (int i =0;i <xyz.length;i++){
System.out.println(i);
sum += i;
}
System.out.println(sum);
return sum;
}
同一种类型数据的集合,其实就是一个容器 可以自动给数组中的元素从0开始编号,方便操作这些元素
元素类型[] 数组名 = new 元素类型[元素个数或者数组长度] 例子 int [] arr = new int[5] 或者:
元素类型[] 数组名 = new 元素类型[元素,元素,....] int [] arr = new [1,2,3,4]
数组这里的一些练习题,通过一些排序来熟悉: 冒泡排序,以及选择排序
package study_java.ex01;
public class BubbleDemo1 {
public static void main(String[] args) {
int[] arr = {1,4,90,22,12,20,99};
select(arr);
for (int i =0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
public static void bubble(int[] arr){
int tmp = 0;
for (int i= 0; i< arr.length -1;i++){
for (int j=0;j<arr.length -1 - i;j++){
tmp = arr[j];
if (arr[j] > arr[j+1]){
arr[j] = arr[j+1];
arr[j+1] = tmp;
}
}
}
}
public static void bubble2(int[] arr){
int tmp =0;
for (int i = 0; i < arr.length-1;i++){
for (int j=0;j<arr.length-1-i;j++){
tmp = arr[j];
if (arr[j] < arr[j+1]){
arr[j] = arr[j+1];
arr[j+1] = tmp;
}
}
}
}
public static void select(int[] arr){
int tmp = 0;
for(int i = 0;i < arr.length-1;i++){
int min_loc = i;
for (int j=i+1;j<arr.length;j++){
if (arr[j] < arr[min_loc]){
min_loc = j;
}
}
tmp = arr[i];
arr[i] = arr[min_loc];
arr[min_loc] = tmp;
}
}
}